研究了一天终于实现了在springboot中集成通用Mapper,分页插件,和Generator,特此记录一下
首先是集成Generator,有几种方式,在这里使用maven集成
- 在pom.xml中集成Generator插件
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<!--热部署插件-->
<artifactId>spring-boot-maven-plugin</artifactId>
<!--项目每次修改之后重新启动-->
<!--<configuration>
<fork>true</fork>
</configuration>-->
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!--使用6.0以上的版本会生成文件失败,暂时不知道原因-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
2.配置generatorConfig.xml
<?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>
<!--导入属性配置 -->
<properties resource="generator.properties"></properties>
<!--这里是重点!!targetRuntime要配置MyBatis3Simple而不是MyBatis3
否则会命名冲突!!-->
<context id="default" targetRuntime="MyBatis3Simple">
<!--集成通用Mapper插件-->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!--jdbc的数据库连接 -->
<jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="true"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="${jdbc.entity.package}" targetProject="src/main/java">
<property name="constructorBased" value="true"/>
<property name="enableSubPackages" value="false"/>
<property name="immutable" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="${jdbc.mapper.package}" targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<javaClientGenerator targetPackage="${jdbc.mapper.package}" targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="false"/>
<property name="exampleMethodVisibility" value=""/>
<property name="methodNameCalculator" value=""/>
<!--为生成的接口添加父接口 -->
<property name="rootInterface" value=""/>
</javaClientGenerator>
<table schema="" tableName="%">
</table>
</context>
</generatorConfiguration>
3.运行mvn命令
mvn mybatis-generator:generate
到此就可以生成mapper文件以及xml,在这里提及一下,在IDEA工具中,如果将xml生成在java目录下是会报错的,必须生成在resource目录中,如果不想生成在resource中
则可以在maven中配置资源目录用来识别xml
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!--此处如果不配做resource目录,则运行其他maven命令时,maven将不会识别resource中的配置文件-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
4.在springboot的配置文件中配置
mybatis:
type-aliases-package: com.spring.demo.entity
mapper-locations: classpath:generator/*.xml
configuration:
#支持驼峰命名法
map-underscore-to-camel-case: true
#打开延迟加载的开关
lazy-loading-enabled: true
#将积极加载改为消极加载即按需加载
aggressive-lazy-loading: false
#开启二级缓存
cache-enabled: true
5.用maven集成通用Mapper,分页插件
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!--通用Mapper插件-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.5</version>
</dependency>
使用这两个包则可以去掉mybatis的依赖,这两个包中已经包含了mybatis的依赖
6.新建MyBatisConfig用来配置分页插件
@Configuration
public class MyBatisConfig{
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
//添加配置,也可以指定文件路径
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
return pageHelper;
}
}
7.如果使用了springboot的热部署插件则还需要在入口文件中将mapper文件放入
restart启动器
System.setProperty("restart.include.mapper", "/mapper-[\\\\w-\\\\.]+jar");
System.setProperty("restart.include.pagehelper", "/pagehelper-[\\\\w-\\\\.]+jar");
至此大功告成