Advertisement

MyBatis实现分页、排序、条件查询

阅读量:

文章目录

            • 1、前端样式
        • 2、定义返回结果集
        • 3、MyBatis逆向工程
        • 4、业务代码
        • 5、Log4j的SQL
1、前端样式
在这里插入图片描述
2、定义返回结果集
复制代码
    import java.util.List;
    
    public class ListResult<T> {
    /** * 返回信息
     */
    private String msg;
    /** * 返回状态 -1表示错误 200表示成功
     */
    private Integer status;
    /** * 数据的总条数
     */
    private Integer total;
    /** * 具体返回的数据
     */
    private List<T> data;
    /** * get&&set方法 略
     */
    public String getXxx() {...}
    
    public void setXxx(...) {...}
    }
3、MyBatis逆向工程

生成JavaBean、mapper接口、mapper配置文件

过程:略

4、业务代码

Controller层(视图层、控制层)

复制代码
    @GetMapping(value = "/managers")
    public ListResult<Manager> mgrShow(String selKey, String selValue, Integer pagenum, Integer pagesize){
    	// 测试接口是否能收到数据 前端URL: http://localhost:8181/selroom/managers?selKey=name&selValue=sfasf&pagenum=1&pages
    System.out.println(selKey+":"+selValue+":"+pagenum+":"+pagesize);
    
    	// 基于JWT的token校验
    	// 略
    	
    // 初始化 结果集
    ListResult<Manager> result = new ListResult<>();
    result.setStatus(-1);
    
    // 接收 Service层的 结果集
    result = managerService.findAllByPageInfo(selKey,selValue,pagenum, pagesize);
    
    result.setStatus(200);
    return result;
    }

ServiceImpl.java(业务逻辑层 的实现类)

复制代码
    @Override
    public ListResult<Manager> findAllByPageInfo(String selKey, String selValue, Integer pagenum, Integer pagesize) {
    // 初始化 结果集
    ListResult<Manager> result = new ListResult<>();
    
    // SQL语句
    ManagerExample example = new ManagerExample();
    ManagerExample.Criteria criteria = example.createCriteria();
    // 拼接动态SQL
    if (!"".equals(selValue)) {
        // 编号 精准匹配
        if ("id".equals(selKey)) {
            criteria.andIdEqualTo(Integer.valueOf(selValue));
        }
        // 昵称 模糊查询
        if ("name".equals(selKey)) {
            criteria.andNameLike("%" + selValue + "%");
        }
        // 身份 精准匹配 (待完成)
        // 电话 精准匹配
        if ("tel".equals(selKey)) {
            criteria.andTelEqualTo(selValue);
        }
        // 状态 精准匹配 (功能是否上线 待定)
    }
    // 数据总条数
    result.setTotal(managerMapper.countByExample(example));
    // id升序 and 分页查询
    example.setOrderByClause(" id asc limit " + (pagenum - 1) * pagesize + "," + pagesize);
    result.setData(managerMapper.selectByExample(example));
    return result;
    }
5、Log4j的SQL

当selValue为空值时,
执行全表查询:
select xxx from t_xxx order by id asc limit 0,10
当selValue存在值时,
根据设定条件进行查询:

  1. 精确匹配:
    select xxx from t_xxx WHERE (id = ?) order by id asc limit 0,10
  2. 近似匹配:
    select xxx from t_xxx WHERE (name like ?) order by id asc limit 0,10
    其中的近似匹配结果返回total_records(total条数)
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~