注意: 本文是在springboot整合mybatis的基礎下 進行延伸的。
mybatis 集成springboot 就不說了,下面講一下,由於mybatis的mapper以及 實體類 如果要手寫的話,準備工作會很繁雜,由此,介紹一下逆向生成工具。
首先,引入對應依賴,在pom文件中,build目錄下,plugins下引入一下依賴
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
其中,引入了 generatorConfig.xml 文件,路徑根據自己的需要定義
一下是 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>
<!--maven命令: mvn mybatis-generator:generate-->
<!--mysql 連接數據庫jar 這裏選擇自己本地位置-->
<classPathEntry location="D:\jar\mysql-connector-java-5.1.40.jar" />
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"><!--不生成example--> <!--將MyBatis3Simple換成MyBatis3則生成Simple文件-->
<commentGenerator>
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/springboot_demo?serverTimezone=UTC" userId="root"
password="123456">
</jdbcConnection>
<!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 和
NUMERIC 類型解析爲java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO類的位置 -->
<javaModelGenerator targetPackage="com.example.demo.entity"
targetProject="src/main/java">
<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
<property name="enableSubPackages" value="false" />
<!-- 從數據庫返回的值被清理前後的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是單獨的一個工程,targetProject="src/main/java"
若果maven工程是分模塊的工程,targetProject="所屬模塊的名稱",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources">
<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.demo.dao"
targetProject="src/main/java">
<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定數據庫表 -->
<table schema="mysql" tableName="user"></table>
</context>
</generatorConfiguration>
啓動它,需要引入本地的 mysql-connector-java 的jar包,自己下載就可以了。
配置好 文件內容後,運行命令:
maven命令: mvn mybatis-generator:generate
逆向生成了,此方法,只生成一個mapper,並不會生成 example 文件。(上面xml文件裏,有一行可以配置)
集成通用mapper:
那麼現在有個問題,逆向生成的mapper裏,有好多都是基本方法,本人就是看着這些通用方法太亂,纔沒有引入example的mapper文件,那現在生成出來的mapper 還是有7個基本的方法,所以我們可以集成一個通用mapper,讓每個mapper都繼承這個通用的mapper , 這樣就簡化了,也更加符合Java思想了。
步驟:
先引入通用mapper 的pom依賴
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
然後自己定義一個通用mapper類,如下:
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> {
}
注意: 自定義的通用mapper 不要和生成的mapper放在一個包下,否則,掃描會報錯。(這個也是看其他博主文章有寫到,自己沒有試,大家可以自己試下,一起討論。)
然後,在springboot的啓動類 Application 中加入註解
@MapperScan(value = "com.example.demo.dao", markerInterface = MyMapper.class)
value裏對應的是,每個實體對應的mapper, 後面則是你剛纔自定義的通用的mapper類
到此,集成通用mapper 就完成了。
當然,有點瑕疵的是,逆向生成的時候,因爲不是根據通用mapper來的 ,所以,生成完成以後, 把mapper接口以及xml文件的方法手動刪掉就可以了。
本文參考:通用Mapper官方文檔: https://gitee.com/free/Mapper
同時,如果想要用分頁插件,可前往: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
這個介紹的比較詳細。
動態sql 詳見: http://www.mybatis.org/mybatis-3/zh/statement-builders.html
感覺本文章有用的話,引用請註明出處:https://blog.csdn.net/qq_26620259/article/details/84323850