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> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <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>
<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"/> <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(); empExample.createCriteria().andEnameLike("a").andAgeGreaterThan(20).andDidIsNotNull(); 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
| <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 获取分页信息,最后打印出分页相关数据和遍历查询结果。