Example ss=Example(Notice.class);
ss.createCriteria;
源码如下
/*** 手写条件** @param condition 例如 "length(countryname)<5"* @return*/public Criteria andCondition(String condition) {addCriterion(condition);return (Criteria) this;}/*** 手写左边条件,右边用value值** @param condition 例如 "length(countryname)="* @param value 例如 5* @return*/public Criteria andCondition(String condition, Object value) {criteria.add(new Criterion(condition, value));return (Criteria) this;}
我的目的是 想去 拼接sql 时间和 日期 拼接 最好的 concat(concat(end_date,’ ‘),end_time) 的拼接
但是问题是 空格 不能被解析到 这个问题先被搁置
第二个问题是 一般情况下 如 他们的property的值 是 pojo里面的值 他会自动转成数据库里面的值
criteria.andEqualTo(“userId”, userId);
criteria.andEqualTo(“idData”, workScheduleId);
但是 在使用 andCondition 里面 他的值是 数据量里面的值 而不是pojo里面的值 因为这是sql语句
/****/String s="2020-08-08 04:00";String ss="2020-08-08 12:00";String ta=" ";Example example1 = new Example(WorkSchedule.class);Example.Criteria criteria1 = example1.createCriteria();criteria1.andCondition("concat(start_date,start_time)>='"+s+"'");//criteria1.andCondition("concat(concat(end_date,' '),end_time)<='"+ss+"'");List<WorkSchedule> list = workScheduleMapper.selectByExample(example1);System.out.println(list);/****/criteria.andCondition(userId+"between concat(START_DATE, START_TIME) and concat(END_DATE,END_TIME)");
可以了 就是 加一个 ‘ ‘ 就完事了
/****/String ss="2020-08-08 09:00";String sss=" ";Example example1 = new Example(WorkSchedule.class);Example.Criteria criteria1 = example1.createCriteria();criteria1.andCondition("concat(concat(start_date,' '),start_time)=",ss);List<WorkSchedule> list = workScheduleMapper.selectByExample(example1);System.out.println(list);/****/
总结
查看sql语言拼接是否正确 可以去Durid 里面 或者 直接在 IDEA里面 直接显示 进行查看
