在mapper。java文件中:List<Admin> selectByLimit(Map<String,Object> paramMap);
在mapper。XML文件中:
<select id="selectByLimit" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tb_admin
<if test="province != null">
where role_id IN(
SELECT role_id FROM tb_role where
province = #{province,jdbcType=VARCHAR}
<if test="city != null">
AND city = #{city,jdbcType=VARCHAR}
<if test="area != null">
AND area = #{area,jdbcType=VARCHAR}
</if>
</if>
)
</if>
<if test="start != null and end != null">
limit #{start,jdbcType=INTEGER},#{end,jdbcType=INTEGER}
</if>
</select>
在service.java中:List<Admin> getAdminList(Integer start, Integer end, String province, String city, String area);
在serviceImpl。java中:
public List<Admin> getAdminList(Integer start, Integer end, String province, String city, String area) {
Map<String, Object> params = new TreeMap<>();
if(start != null) {
params.put("start", start);
}
if(end != null) {
params.put("end", end);
}
if(StringUtil.isNotEmpty(province)) {
params.put("province", province);
if(StringUtil.isNotEmpty(city)) {
params.put("city", city);
if(StringUtil.isNotEmpty(area)) {
params.put("area", area);
}
}
}
return adminMapper.selectByLimit(params);
}
在controller。java中:
@RequestMapping(value = "/getAdminByList", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
public Map<String,Object> getAdminByList(@RequestBody Map<String, String> params) {
Map<String,Object> map = new TreeMap<>();
try {
String start = params.get("start");
String end = params.get("end");
String username = params.get("username");
Role role = oilStationService.getMenus(username);
String province = role.getProvince();
String city = role.getCity();
String area = role.getArea();
Map<String,Integer> paramMap = new TreeMap<>();
if(StringUtil.isNotEmpty(start)) {
paramMap.put("start", Integer.valueOf(start));
}
if(StringUtil.isNotEmpty(end)) {
paramMap.put("end", Integer.valueOf(end));
}
List<Admin> adminList = adminService.getAdminList(paramMap.get("start"), paramMap.get("end"), province, city, area);
int count = adminService.getCount();
map.put("code", 200);
map.put("msg", "");
map.put("count", 1);
map.put("data", adminList);
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
需要注意的是,因为有些值前端可能传null,有可能传正确的值,另外还需要对请求参数转换形式,所以可以先判断值是否为空,如果不为空,就把值放到map中,然后使用map作为请求参数。