【Mybatis】批量映射优化 分页插件PageHelper 逆向工程插件MybatisX Lombok


一、Mapper批量映射优化

  • 需求:
    Mapper 配置文件很多时,在全局配置文件中一个一个注册太麻烦

  • 配置方式
    Mybatis 允许在指定 Mapper 映射文件时,只指定其所在的包:

    <mappers>
        <package name="com.wake.mapper"/>
    </mappers>

此时这个包下的所有 Mapper 配置文件将被自动加载、注册

  • 资源创建要求
      1. 要求 mapper.xml 文件 和 mapper接口 的命名必须相同
      1. 最终打包后的位置要一致,都需要在指定的包地址下
      • resources 文件夹创建对应的文件夹结构 (推荐)
      • ② xml文件创建在接口所在的包内,在添加pom.xml 配置(麻烦不推荐)
    • 注意:resources 下直接创建多层文件夹 使用 / 分割,不使用.

实例:
1
编译后:
1

二、插件和分页插件PageHelper

2.1 插件机制和PageHelper插件介绍

插件可以在用于语句执行过程中进行拦截,并允许通过自定义处理程序来拦截和修改 SQL 语句、映射语句的结果等。
1

Mybatis-PageHelper 使用文档 Github

使用插件,我们就可以不用自己计算 limit 分页
1

2.2 PageHelper插件使用

  • pom.xml 导入依赖
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.11</version>
        </dependency>
  • mybatis-config.xml 配置分页插件
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <property name="helperDialect" value="mysql"/>
    </plugin>
</plugins>

其中,com.github.pagehelper.PageInterceptor 是 PageHelper 插件的名称,dialect 属性用于指定数据库类型(支持多种数据库)

从标签 <configuration> 中确定 <plugins> 放在哪个位置
1

  • 插件使用
    在查询方法中使用分页:

  • xml

<!--    List<Employee> queryAll();      -->
<mapper namespace="com.wake.mapper.EmployeeMapper">
    <select id="queryAll" resultType="employee">
        <!--  正常编写,结尾不加分号;  -->
        select * from t_emp where emp_salary > 100
    </select>
</mapper>
    @Test
    public void test(){
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
        // 调用之前 , 先设置分页数据(当前是第几页,每页显示多少条数据)
        PageHelper.startPage(1,2);
        // 注意不能将两条查询装到一个分页区
        List<Employee> employeeList = employeeMapper.queryAll();

        //将查询的数据封装到一个PageInfo的分页实体类(一共多少页,一共多少条等)
        PageInfo<Employee> employeePageInfo = new PageInfo<>(employeeList);
        // 获取当前页数据
        List<Employee> list = employeePageInfo.getList();
        System.out.println("list: "+list);
        // 获取总页数
        int pages = employeePageInfo.getPages();
        System.out.println("pages: " + pages);
        // 获取总条数
        long total = employeePageInfo.getTotal();
        System.out.println("total: " + total);
        int pageNum = employeePageInfo.getPageNum();
        int pageSize = employeePageInfo.getPageSize();
        System.out.println("当前第:"+pageNum+" 页,每页显示:"+pageSize+" 条");
    }

1

三、逆向工程和MybatisX插件

3.1 ORM思维介绍

ORM(Object-Relational Mapping,对象-关系映射)是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。
让我们可以使用面向对象思维进行数据库操作。
1
期望半自动orm框架,也能实现单表的crud自动生成
使用逆向工程:半自动orm -》全自动orm

3.2 逆向工程

  • MyBatis 的逆向工程是一种自动化生成持久层代码和映射文件的工具,
  • 它可以根据数据库表结构和设置的参数生成对应的实体类、Mapper.xml 文件、Mapper 接口等代码文件

注意:逆向工程只能生成单表crud的操作,多表查询依然需要我们自己编写!

3.3 逆向工程插件MyBatisX使用

MyBatisX 是一个 MyBatis 的代码生成插件,可以通过简单的配置和操作快速生成 MyBatis Mapper、pojo 类和 Mapper.xml 文件。

  • 安装插件:
    1

  • IDEA中连接数据库

  • 选择需要创建CRUD的表
    1

  • 填写信息
    在这里插入图片描述
    1

  • 结果显示
    1

四、Lombok

注解作用
@Getter/@Setter为所有的属性提供get/set方法
@ToString会给类自动生成易阅读的 toString 方法
@EqualsAndHashCode根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法
@Data提供了更综合的生成代码功能(@Getter + @Setter + @ToString + @EqualsAndHashCode)
@NoArgsConstructor为实体类生成无参的构造器方法
@AllArgsConstructor为实体类生成除了static修饰的字段之外带有各参数的构造器方法。
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
        </dependency>

总结

核心点掌握目标
mybatis基础使用流程, 参数输入,#{} ${},参数输出
mybatis多表实体类设计,resultMap多表结果映射
mybatis动态语句Mybatis动态语句概念, where , if , foreach标签
mybatis扩展Mapper批量处理,分页插件,逆向工程
  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这里给您提供一个MyBatis框架中的分页插件PageHelper的具体使用案例。 1.引入依赖 在Maven中引入PageHelper的依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency> ``` 2.配置插件MyBatis配置文件中配置PageHelper插件: ```xml <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> </plugin> </plugins> ``` 这里使用的是MySQL数据库,如果是其他数据库,可以将dialect属性值设置为相应的数据库类型。 3.使用插件 在需要进行分页查询的方法中,设置分页参数: ```java public List<User> getUsers(int pageNum, int pageSize) { //设置分页参数 PageHelper.startPage(pageNum, pageSize); //执行查询 List<User> userList = userMapper.selectUsers(); //返回查询结果 return userList; } ``` 这里的参数pageNum表示当前页码,pageSize表示每页显示的记录数。 4.获取分页信息 在查询结果中,可以通过PageInfo对象获取分页信息: ```java public PageInfo<User> getUsers(int pageNum, int pageSize) { //设置分页参数 PageHelper.startPage(pageNum, pageSize); //执行查询 List<User> userList = userMapper.selectUsers(); //获取分页信息 PageInfo<User> pageInfo = new PageInfo<>(userList); //返回分页信息 return pageInfo; } ``` 通过PageInfo对象,可以获取总记录数、总页数、当前页码等分页信息。 以上就是MyBatis框架中的分页插件PageHelper的具体使用案例,希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加文格罗夫斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值