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里面 直接显示 进行查看