• mybatis-plus 高级搜索分页功能的实现 sql语句 QueryWrapper 条件判断


    mybatis-plus分页功能的实现
    创建一个mybatisplus的项目。

    配置类mybatisConfig.java 开启。

    写service层的方法。

    mybatisConfig.java
    package com.ppl.mybatispage.config;

    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    /**
     * @author ppliang
     * @date 2020/12/24 19:57
     */
    @Configuration
    public class MybatisConfig {

        /**
         * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
         */
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            //注释下面的可能出现获取不到总数的效果
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }

        @Bean
        public ConfigurationCustomizer configurationCustomizer() {
            return configuration -> configuration.setUseDeprecatedExecutor(false);
        }

    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    EmployeeServiceImpl.java
    package com.ppl.mybatispage.service.impl;

    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.ppl.mybatispage.dao.EmployeeMapper;
    import com.ppl.mybatispage.entity.Employee;
    import com.ppl.mybatispage.service.EmployeeService;
    import org.springframework.stereotype.Service;

    import javax.annotation.Resource;

    /**
     * @author ppliang
     * @date 2020/12/24 19:51
     */
    @Service
    public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper,Employee> implements EmployeeService {

        @Resource
        private EmployeeMapper employeeMapper;

        /**
         * 分页自带包装类
         *   QueryWrapper 进行条件判断
         * @param page
         * @param employee
         * @return
         */
        @Override
        public IPage<Employee> pageEmployee(IPage<Employee> page, Employee employee) {
            // https://baomidou.com/guide/wrapper.html
            // Page<Employee> page=new Page<>(pageNum,pageSize); 设置页数
            QueryWrapper<Employee> employeeQueryWrapper = new QueryWrapper<>();
            //设置查询性别
            employeeQueryWrapper.eq("gender", employee.getGender());
            IPage<Employee> employeeIPage = employeeMapper.selectPage(page, employeeQueryWrapper);
            return employeeIPage;
        }

        /**
         * 分页自带包装类
         *   QueryWrapper 自定义SQL语句
         * @param page
         * @param employee
         * @return
         */
        @Override
        public IPage<Employee> pageEmployee2(IPage<Employee> page,Employee employee) {
            IPage<Employee> employeeIPage = employeeMapper.pageEmployee2(page, employee);
            return employeeIPage;
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    EmployeeMapper.java
    /**
     * @author ppliang
     * @date 2020/12/24 19:50
     */
    public interface EmployeeMapper extends BaseMapper<Employee> {

        IPage<Employee> pageEmployee2(IPage<Employee> page, Employee employee);
    }
    1
    2
    3
    4
    5
    6
    7
    8
    EmployeeMapper.xml
    <?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.ppl.mybatispage.dao.EmployeeMapper">

         <select id="pageEmployee2" resultType="com.ppl.mybatispage.entity.Employee">
            SELECT *
            FROM t_employee
            <where>
                <if test="param2.gender !=null and param2.gender != '' ">
                   and  gender = #{param2.gender}
                </if>
            </where>
        </select>
    </mapper>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    一开始没有总数显示出来,就是在配置类中没有指明数据库类型!!!!

    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    ————————————————
    版权声明:本文为CSDN博主「黄二马」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xiaoliang98/article/details/111657612

  • 相关阅读:
    重读SQLServer技术内幕 -- 故障检测概要
    Android Studio调试React Native项目
    Android 异常处理
    第一天
    记一次"未将对象引用设置到对象的实例"问题的排查过程
    Hyper-V连接虚拟机异常,“无法进行连接,因为可能无法将凭据发送到远程计算机”
    关于TFS2012无法发送警报邮件的问题
    BaseAdapter日常的封装
    android自定义拍照
    Android系统拍照源码
  • 原文地址:https://www.cnblogs.com/csjoz/p/15305429.html
Copyright © 2020-2023  润新知