文章目录
- 一、Mapper批量映射优化
- 二、插件和分页插件PageHelper
- 2.1 插件机制和PageHelper插件介绍
- 2.2 PageHelper插件使用
- 三、逆向工程和MybatisX插件
- 3.1 ORM思维介绍
- 3.2 逆向工程
- 3.3 逆向工程插件MyBatisX使用
- 总结
一、Mapper批量映射优化
-
需求:
Mapper 配置文件很多时,在全局配置文件中一个一个注册太麻烦 -
配置方式
Mybatis 允许在指定 Mapper 映射文件时,只指定其所在的包:
<mappers>
<package name="com.wake.mapper"/>
</mappers>
此时这个包下的所有 Mapper 配置文件将被自动加载、注册
- 资源创建要求
-
- 要求
mapper.xml
文件 和mapper接口
的命名必须相同
- 要求
-
- 最终打包后的位置要一致,都需要在指定的包地址下
- ①
resources
文件夹创建对应的文件夹结构 (推荐) - ② xml文件创建在接口所在的包内,在添加pom.xml 配置(麻烦不推荐)
- 注意:resources 下直接创建多层文件夹 使用
/
分割,不使用.
。
-
实例:
编译后:
二、插件和分页插件PageHelper
2.1 插件机制和PageHelper插件介绍
插件可以在用于语句执行过程中进行拦截,并允许通过自定义处理程序来拦截和修改 SQL 语句、映射语句的结果等。
Mybatis-PageHelper 使用文档 Github
使用插件,我们就可以不用自己计算 limit 分页
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>
放在哪个位置
-
插件使用
在查询方法中使用分页: -
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+" 条");
}
三、逆向工程和MybatisX插件
3.1 ORM思维介绍
ORM(Object-Relational Mapping,对象-关系映射)是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。
让我们可以使用面向对象思维进行数据库操作。
期望半自动orm框架,也能实现单表的crud自动生成
使用逆向工程:半自动orm -》全自动orm
3.2 逆向工程
- MyBatis 的逆向工程是一种自动化生成持久层代码和映射文件的工具,
- 它可以根据数据库表结构和设置的参数生成对应的实体类、Mapper.xml 文件、Mapper 接口等代码文件
注意:逆向工程只能生成单表crud的操作,多表查询依然需要我们自己编写!
3.3 逆向工程插件MyBatisX使用
MyBatisX 是一个 MyBatis 的代码生成插件,可以通过简单的配置和操作快速生成 MyBatis Mapper、pojo 类和 Mapper.xml 文件。
-
安装插件:
-
IDEA中连接数据库
-
选择需要创建CRUD的表
-
填写信息
-
结果显示
总结
核心点 | 掌握目标 |
---|---|
mybatis基础 | 使用流程, 参数输入,#{} ${},参数输出 |
mybatis多表 | 实体类设计,resultMap多表结果映射 |
mybatis动态语句 | Mybatis动态语句概念, where , if , foreach标签 |
mybatis扩展 | Mapper批量处理,分页插件,逆向工程 |