Mybatis插件

kyang MVP++

1.逆向工程插件


1.1 创建逆向工程的步骤

添加依赖和插件

在Maven项目的 pom.xml 文件中添加以下依赖和插件配置

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
54
55
56
57
58
59
60
61
62
<dependencies>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MyBatis Generator依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.2</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.8</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.0</version>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.8</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>install</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

创建MyBatis的核心配置文件

创建 mybatis-config.xml 文件,配置MyBatis的运行环境。

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 其他配置省略 -->
</configuration>

创建逆向工程的配置文件

创建 generatorConfig.xml 文件,配置逆向工程的相关参数。

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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root"
password="123456"/>
<!-- 生成实体类和Mapper接口的配置 -->
<javaModelGenerator targetPackage="com.atguigu.mybatis.bean" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.mapper"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 指定要逆向分析的表 -->
<table tableName="t_emp" domainObjectName="Emp"/>
<table tableName="t_dept" domainObjectName="Dept"/>
</generatorConfiguration>

执行MBG插件的generate目标
在这里插入图片描述

通过以下命令在Maven构建过程中执行MBG插件

1
mvn mybatis-generator:generate

1.2 QBC查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Test
public void testMBG() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(is).openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
EmpExample empExample = new EmpExample();
//创建条件对象,通过andXXX方法为SQL添加查询添加,每个条件之间是and关系
empExample.createCriteria().andEnameLike("a").andAgeGreaterThan(20).andDidIsNotNull();
//将之前添加的条件通过or拼接其他条件
empExample.or().andSexEqualTo("男");
List<Emp> list = mapper.selectByExample(empExample);
for (Emp emp : list) {
System.out.println(emp);
}
}

2. 分页插件


2.1 添加依赖

pom.xml 文件中添加 PageHelper 的依赖:

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>

2.2 配置分页插件

在 MyBatis 的核心配置文件 mybatis-config.xml 中配置 PageHelper 插件

1
2
3
4
5
6
7
<plugins>
<!-- 设置分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 可以配置一些参数,比如分页插件的具体实现 -->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>

2.3 分页插件的使用

开启分页功能

在使用分页查询之前,使用 PageHelper 的 startPage 方法开启分页功能。这个方法通常在服务层的查询方法调用之前调用。

1
2
3
int pageNum = 1; // 当前页码
int pageSize = 10; // 每页显示的条数
PageHelper.startPage(pageNum, pageSize);
获取分页相关数据

在执行查询后,可以使用 PageInfo 对象来获取分页相关的数据,如当前页码、每页显示的条数、总记录数、总页数等。

1
2
List<Emp> list = empMapper.selectByExample(empExample);
PageInfo<Emp> pageInfo = new PageInfo<>(list);
分页相关数据

PageInfo 对象包含了很多分页相关的属性,以下是一些常用的属性:

  • pageNum: 当前页的页码。
  • pageSize: 每页显示的条数。
  • size: 当前页显示的真实条数。
  • total: 总记录数。
  • pages: 总页数。
  • prePage: 上一页的页码。
  • nextPage: 下一页的页码。
  • isFirstPage: 是否为第一页。
  • isLastPage: 是否为最后一页。
  • hasPreviousPage: 是否存在上一页。
  • hasNextPage: 是否存在下一页。
  • navigatePages: 导航分页的页码数。
  • navigatepageNums: 导航分页的页码数组。

2.4 示例代码

以下是一个使用 PageHelper 实现分页查询的示例

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
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import com.github.pagehelper.PageInfo;

public class PaginationTest {

@Test
public void testPagination() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
EmpExample empExample = new EmpExample();
// 设置分页参数
int pageNum = 1;
int pageSize = 10;
PageHelper.startPage(pageNum, pageSize);
// 执行查询
List<Emp> list = empMapper.selectByExample(empExample);
// 获取分页信息
PageInfo<Emp> pageInfo = new PageInfo<>(list);
// 打印分页信息
System.out.println("Total: " + pageInfo.getTotal());
System.out.println("Pages: " + pageInfo.getPages());
System.out.println("Current Page: " + pageInfo.getPageNum());
System.out.println("Size: " + pageInfo.getSize());
// 遍历结果集
for (Emp emp : list) {
System.out.println(emp);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

在这个示例中,我们首先设置了分页参数,然后通过 PageHelper.startPage 开启分页功能,接着执行查询,并使用 PageInfo 获取分页信息,最后打印出分页相关数据和遍历查询结果。

  • 标题: Mybatis插件
  • 作者: kyang
  • 创建于 : 2024-10-22 15:17:16
  • 更新于 : 2025-07-11 16:56:12
  • 链接: https://blog.kyang.top/2024/10/22/Mybatis插件/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论