Mybatis插件
文章目录
- Mybatis插件
- 1.逆向工程插件
- 1.1 创建逆向工程的步骤
- 1.2 QBC查询
- 2. 分页插件
- 2.1 添加依赖
- 2.2 配置分页插件
- 2.3 分页插件的使用
- 开启分页功能
- 获取分页相关数据
- 分页相关数据
- 2.4 示例代码
1.逆向工程插件
1.1 创建逆向工程的步骤
添加依赖和插件
在Maven项目的 pom.xml
文件中添加以下依赖和插件配置
<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的运行环境。
<?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
文件,配置逆向工程的相关参数。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//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插件
mvn mybatis-generator:generate
1.2 QBC查询
@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 的依赖:
<!-- 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 插件
<plugins><!-- 设置分页插件 --><plugin interceptor="com.github.pagehelper.PageInterceptor"><!-- 可以配置一些参数,比如分页插件的具体实现 --><property name="dialect" value="mysql"/></plugin>
</plugins>
2.3 分页插件的使用
开启分页功能
在使用分页查询之前,使用 PageHelper 的 startPage
方法开启分页功能。这个方法通常在服务层的查询方法调用之前调用。
int pageNum = 1; // 当前页码
int pageSize = 10; // 每页显示的条数
PageHelper.startPage(pageNum, pageSize);
获取分页相关数据
在执行查询后,可以使用 PageInfo
对象来获取分页相关的数据,如当前页码、每页显示的条数、总记录数、总页数等。
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 实现分页查询的示例
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 {@Testpublic 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
获取分页信息,最后打印出分页相关数据和遍历查询结果。