|
当进行多条件动态查询时,最方便的使用@SelectProvider(type=XXXSqlProvider.class, method="getXXX")注解
此时我们需要编写自己的SqlProvider,我们需要用到org.apache.ibatis.jdbc.SqlBuilder中的静态方法,来看一段代码吧,如下:
public String getUserListByConditions(Map<String, Object> parameter){
String age= (String) parameter.get("age");
String isdead= (String) parameter.get("isdead");
BEGIN();
SELECT("*");
FROM("user");
if(age!=null&&!age.equals("")){
int _age= Integer.parseInt(age);
WHERE("age="+_age+"");
}
if(isdead!=null&&!isdead.equals("")){
boolean _isdead= Boolean.parseBoolean(isdead);
WHERE("isDisplay="+_isdead+"");
}
ORDER_BY("createtime DESC LIMIT #{offset}, #{pagesize}");
return SQL();
}
上面代码的意思是拼凑了一条sql语句,用以查询user。条件动态为:age,isdead,最后分页显示。
请注意该方法的参数parameter是获取Mapper传递过来的,对应的mapper如下:
@SelectProvider(type=UserSqlProvider.class, method="getUserListByConditions")
List<User> getUserListByConditions(@Param("age")String age,@Param("isdead")String isdead,@Param("offset")int offset,@Param("pagesize")int pageSize) |
|
|