Example ss=Example(Notice.class);
ss.createCriteria;

源码如下

  1. /**
  2. * 手写条件
  3. *
  4. * @param condition 例如 "length(countryname)<5"
  5. * @return
  6. */
  7. public Criteria andCondition(String condition) {
  8. addCriterion(condition);
  9. return (Criteria) this;
  10. }
  11. /**
  12. * 手写左边条件,右边用value值
  13. *
  14. * @param condition 例如 "length(countryname)="
  15. * @param value 例如 5
  16. * @return
  17. */
  18. public Criteria andCondition(String condition, Object value) {
  19. criteria.add(new Criterion(condition, value));
  20. return (Criteria) this;
  21. }

我的目的是 想去 拼接sql 时间和 日期 拼接 最好的 concat(concat(end_date,’ ‘),end_time) 的拼接

但是问题是 空格 不能被解析到 这个问题先被搁置

第二个问题是 一般情况下 如 他们的property的值 是 pojo里面的值 他会自动转成数据库里面的值
criteria.andEqualTo(“userId”, userId);
criteria.andEqualTo(“idData”, workScheduleId);

但是 在使用 andCondition 里面 他的值是 数据量里面的值 而不是pojo里面的值 因为这是sql语句

  1. /**
  2. *
  3. */
  4. String s="2020-08-08 04:00";
  5. String ss="2020-08-08 12:00";
  6. String ta=" ";
  7. Example example1 = new Example(WorkSchedule.class);
  8. Example.Criteria criteria1 = example1.createCriteria();
  9. criteria1.andCondition("concat(start_date,start_time)>='"+s+"'");
  10. //criteria1.andCondition("concat(concat(end_date,' '),end_time)<='"+ss+"'");
  11. List<WorkSchedule> list = workScheduleMapper.selectByExample(example1);
  12. System.out.println(list);
  13. /**
  14. *
  15. */
  16. criteria.andCondition(userId+"between concat(START_DATE, START_TIME) and concat(END_DATE,END_TIME)");

可以了 就是 加一个 ‘ ‘ 就完事了

  1. /**
  2. *
  3. */
  4. String ss="2020-08-08 09:00";
  5. String sss="&#x0020;";
  6. Example example1 = new Example(WorkSchedule.class);
  7. Example.Criteria criteria1 = example1.createCriteria();
  8. criteria1.andCondition("concat(concat(start_date,' '),start_time)=",ss);
  9. List<WorkSchedule> list = workScheduleMapper.selectByExample(example1);
  10. System.out.println(list);
  11. /**
  12. *
  13. */

总结

查看sql语言拼接是否正确 可以去Durid 里面 或者 直接在 IDEA里面 直接显示 进行查看