java多条件查询设计
一、java 多条件数组查询
1.编写SQL语句 mapper.xml
<select id="findByCondition" resultMap="BaseResultMap">
<where>
1 = 1
<if test="plan_year != null and plan_year.length >0 ">
and e1.plan_year in
<foreach collection="plan_year" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
ORDER BY id DESC
</select>
2.dao层代码编写 生成get,set方法
/** 条件 */
private String el_planYear;
/** 分页个数 */
private Long count;
/** 当前页 */
private Long currentPage;
3.mappar代码编写
IPage<List<实体类>> findByCondition(Page page,@Param("elPlan") 实体类 elPlan,@Param("el_planYear") String[] el_planYear );
4.service层
IPage<List<实体类>> findByCondition(实体类 elPlan);
5.service实现
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
public IPage<List<实体类>> findByCondition(实体类 elPlan){
Page page = new Page();
page.setSize(elPlan.getCount());
page.setCurrent(elPlan.getCurrentPage());
String[] el_planYear = elPlan.getEl_pPlanYear().split(",");
return elPlanMapper.findByCondition(page,elPlan,el_planYear);
}
6.Controller层
@PostMapping("/find")
public CommonResponse<IPage<List<实体类>>> findByCondition(实体类 elPlan){
try {
return CommonResponse.ok(elPlanService.findByCondition(elPlan));
}catch (Exception e){
e.printStackTrace();
return CommonResponse.errorException("查询失败");
}
}
7.apifox测试
二、java 多条件集合排序
1.编写SQL语句 mapper.xml
<select id="findByCondition" resultMap="BaseResultMap">
<where>
1 = 1
<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>
</if>
</where>
ORDER BY id DESC
</select>
2.dao层代码编写 生成get,set方法
private String[] el_planYear;
3.mappar代码编写
List<实体类> findByCondition(@Param("elPlan") 实体类 elPlan,@Param("el_planYear") List<String> el_planYear );
4.service层
PageInfo<实体类> findByCondition(实体类 elPlan,List<String> el_planYear,
Integer pageSize,Integer pageNum);
5.service实现
public PageInfo<实体类> findByCondition(实体类 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;
}
6.Controller层
@GetMapping("/find")
public CommonResponse findByCondition(实体类 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("查询失败");
}
}
7.postmain测试