java多条件查询
java多条件查询
在项目实际中会用得到多条件查询,就是在一个搜索框中选择多个条件去在数据库中查询, 在这里自己总结一下
首先编写SQL语句:
<select id="findByCondition" resultMap="BaseResultMap">
<where>
1 = 1 AND e1.plan_is_del = 0
<if test="el_planYear != null and el_planYear.size > 0" >
AND e1.plan_year in
<foreach collection="el_planYear" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</where>
ORDER BY id DESC
</select>
用到了SQL foreach 来实现传入多个参数,因为collection的参数为数组所以要在dao层将el_planYear定义为数组
dao层代码编写 生成get,set方法
private String[] el_planYear;
mappar代码编写
List<实体类> findByCondition(@Param("elPlan") 实体类 elPlan,@Param("el_planYear") List<String> el_planYear );
server层
PageInfo<实体类> findByCondition(实体类 elPlan,List<String> el_planYear,
Integer pageSize,Integer pageNum);
实现server
public PageInfo<ElPlan> findByCondition(ElPlan elPlan,List<String> el_planYear,
Integer pageSize,Integer pageNum){
PageHelper.startPage(pageNum,pageSize);
List<ElPlan> list = elPlanMapper.findByCondition(elPlan,el_planYear);
PageInfo pageInfo = new PageInfo(list);
return pageInfo;
}
Controller层
@GetMapping("/find")
public CommonResponse findByCondition(ElPlan elPlan,Integer pageNum,Integer pageSize){
try {
return CommonResponse.ok(elPlanService.findByCondition(elPlan,
Arrays.asList(elPlan.getEl_planYear()),pageNum,pageSize));
}catch (Exception e){
e.printStackTrace();
return CommonResponse.errorException("查询失败");
}
}
CommonResponse 为自定义响应数据结构
测试效果