Mybatis三剑客
一、Mybatis-generator
Mybatis-generator可以帮助开发人员快速实现从表到java对象的生成工作,让开发人员解放出来更专注于业务逻辑的开发。
1、在pom.xml中添加插件,并配置对表重复生成时会覆盖
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<overwrite>true</overwrite>
</configuration>
</plugin>
2、在resources目录下新建generatorConfig.xml,从官网http://mybatis.org/generator/configreference/xmlconfig.html中粘贴示例,再根据自身项目修改
<?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>
<classPathEntry location="G:\Projects\JavaProjects\mysql-connector-java-5.1.6.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/mall?characterEncoding=utf-8"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage="com.imooc.mall.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.imooc.mall.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="mall_order" domainObjectName="Order" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>
</context>
</generatorConfiguration>
3、generatorConfig.xml配置详解:http://www.imooc.com/article/21444
(1)配置连接数据库所用的驱动,这里选用5.1.6版本
<classPathEntry location="G:\Projects\JavaProjects\mysql-connector-java-5.1.6.jar" />
(2)配置不再追加xml内容和不添加注释
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
(3)配置数据库相关设置
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/mall?characterEncoding=utf-8"
userId="root"
password="root">
</jdbcConnection>
(4)配置pojo,即实体类生成位置
<javaModelGenerator targetPackage="com.imooc.mall.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
(5)配置mapper,即Mapper.xml的位置
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
(6)配置dao,即接口文件的位置
<javaClientGenerator type="XMLMAPPER" targetPackage="com.imooc.mall.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
(7)配置需要生成的表,并确定生成的前缀,取消一些example方法
<table tableName="mall_order" domainObjectName="Order" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>
4、开始生成。在idea的终端中输入命令
mvn mybatis-generator:generate

二、Mybatis-plugin
1、在idea中下载插件,并重启idea

2、通过点击箭头实现dao接口中的方法与对应xml实现的相互跳转

三、Mybatis-PageHelper
官方文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
1、引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
2、在调用dao前加上PageHelper.startPage(pageNum, pageSize),pageNum指第几页,pageSize指一页的数量
PageHelper.startPage(pageNum, pageSize);
List<ProductVO> productVOList = productMapper.selectByCategoryIdSet(categoryIdSet);
3、查找完成后获取相关信息
PageInfo pageInfo = new PageInfo<>(productList);
pageInfo.setList(productVOList);
“`java
{
"status": 0,
"data": {
"total": 4,
"list": [],
"pageNum": 3,
"pageSize": 4,
"size": 0,
"startRow": 0,
"endRow": 0,
"pages": 1,
"prePage": 2,
"nextPage": 0,
"isFirstPage": false,
"isLastPage": false,
"hasPreviousPage": true,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1
}
}
“`