需求:一个搜索栏输入条件进行模糊查询.
1.controller层
package com.yofc.cloud.web; import com.yofc.cloud.core.Result; import com.yofc.cloud.core.ResultGenerator; import com.yofc.cloud.exception.BusinessException; import com.yofc.cloud.service.CaseBase.CaseBaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by liumiao on 2018/5/2. */ @Controller @RequestMapping("/caseBase") public class CaseBaseController { @Autowired private CaseBaseService caseBaseService; //分页查询(无条件和条件查询) @ResponseBody @RequestMapping(value = "/queryPage", produces = "application/json;charset=UTF-8", method = RequestMethod.POST) public Result queryPage(String searchCriteria, int pageNum, int pageSize) throws BusinessException { return ResultGenerator.genSuccessResult(this.caseBaseService.queryPage(searchCriteria, pageNum, pageSize)); } }2.service层实现类
package com.yofc.cloud.service.CaseBase.impl; import com.yofc.cloud.common.StringUtil; import com.yofc.cloud.exception.BusinessException; import com.yofc.cloud.service.CaseBase.CaseBaseService; import com.yofc.cloud.vo.CaseBaseVO; import com.yofc.dal.sentencing.CaseBaseDao; import com.yofc.dal.util.paginate.bean.Page; import org.apache.commons.collections.map.HashedMap; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * Created by liumiao on 2018/5/2. */ @Service public class CaseBaseServiceImpl implements CaseBaseService { private static final Logger log = Logger.getLogger(CaseBaseServiceImpl.class); @Autowired private CaseBaseDao caseBaseDao; @Override public Page<CaseBaseVO> queryPage(String searchCriteria, int pageNum, int pageSize) throws BusinessException { //构建条件 Map<java.lang.String, Object> map = new HashedMap(); //如果有条件,添加条件 if (!StringUtil.isEmpty(searchCriteria)) { map.put("criteria", "%" + searchCriteria + "%");//设置模糊查询字段 } //查询总条数 int totalRow = caseBaseDao.getTotalRow(map); //开始读取行 int startRow = (pageNum - 1) * pageSize; //设置分页参数 map.put("startRow", startRow); map.put("pageSize", pageSize); //分页查询记录 List<CaseBaseVO> pageData = caseBaseDao.queryPageData(map); //总页数,向上取整 int totalPage = (int) Math.ceil((float) totalRow / pageSize); //封装结果到page中返回 Page<CaseBaseVO> page = new Page<CaseBaseVO>(pageData, pageNum, pageSize, totalPage, totalRow); log.info(page); return page; } }3.mybatis.xml文件中sql编写:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yofc.dal.sentencing.CaseBaseDao"> <!-- 条件分页查询--> <select id="queryPageData" parameterType="java.util.Map" resultType="com.yofc.cloud.vo.CaseBaseVO"> SELECT cal_id as calId, case_id as caseId, case_name as caseName, person_name as personName, person_sex as personSex, person_age as personAge from t_case_base c <where> <if test="criteria != null"> c.case_id LIKE #{criteria} OR c.case_name LIKE #{criteria} OR c.person_name LIKE #{criteria} </if> </where> limit #{startRow},#{pageSize} </select> <!--查询总条数 --> <select id="getTotalRow" parameterType="java.util.Map" resultType="java.lang.Integer"> select count(1) from t_case_base c <where> <if test="criteria != null"> c.case_id LIKE #{criteria} OR c.case_name LIKE #{criteria} OR c.person_name LIKE #{criteria} </if> </where> </select> </mapper>
4.使用postman检验成功