mybatis条件分页查询sql

需求:一个搜索栏输入条件进行模糊查询.

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检验成功


猜你喜欢

转载自blog.csdn.net/kebo_china/article/details/80181488
今日推荐