MyBatis?Generator?ORM層面的代碼自動(dòng)生成器(推薦)
在日常開發(fā)工作中,我們往往需要自己去構(gòu)建各種數(shù)據(jù)表所對(duì)應(yīng)的持久化對(duì)象(POJO)、用于操作數(shù)據(jù)庫(kù)的接口(DAO)以及跟 DAO 所綁定的對(duì)應(yīng) XML。這都是一些重復(fù)性的操作,不需要多大技術(shù)含量。MyBatis Generator工具,能夠幫助我們?nèi)プ詣?dòng)生成這些文件。
MyBatis Generator 簡(jiǎn)介
作為一個(gè)基于 MyBatis 的獨(dú)立工具,MyBatis Generator 能夠滿足我們以上的要求,能夠通過(guò)簡(jiǎn)單的配置去幫我們生成數(shù)據(jù)表所對(duì)應(yīng)的 POJO、DAO、XML 等文件,減去我們手動(dòng)去生成這些文件的時(shí)間,有效提高開發(fā)效率。MyBatis Generator 運(yùn)行方式多樣,主要可以通過(guò)以下幾種方式來(lái)運(yùn)行:
- 命令行
- Ant
- Maven
- Java
- IDE
Mybatis Generator簡(jiǎn)稱 MBG,是一個(gè)專門為 MyBatis和 ibatis框架使用者提供的代碼生成器。也可以快速的根據(jù)數(shù)據(jù)表生成對(duì)應(yīng)的pojo類、Mapper接口、Mapper文件,甚至生成QBC風(fēng)格的查詢對(duì)象。
MyBatis Generator的使用
使用 MyBatis Generator,需要在項(xiàng)目中配置了數(shù)據(jù)庫(kù)和 MyBatis 的相關(guān)依賴。
引入插件
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- mybatis-generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>配置生成器文件
<?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>
<!--targetRuntime="MyBatis3"-->
<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
<!-- 生成的Java文件的編碼 -->
<property name="javaFileEncoding" value="UTF-8" />
<!-- beginningDelimiter和endingDelimiter:指明數(shù)據(jù)庫(kù)的用于標(biāo)記數(shù)據(jù)庫(kù)對(duì)象名的符號(hào),比如ORACLE就是雙引號(hào),MYSQL默認(rèn)是`反引號(hào); -->
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<!-- 注釋生成器 -->
<commentGenerator>
<property name="suppressDate" value="true" />
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 必須要有的,使用這個(gè)配置鏈接數(shù)據(jù)庫(kù) @TODO:是否可以擴(kuò)展 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root"
password="1111">
</jdbcConnection>
<!-- 生成domain對(duì)象 -->
<javaModelGenerator targetPackage="com.sunny.domain" targetProject="mybatis-11_MBG/src/main/java">
<property name="enableSubPackages" value="true" />
</javaModelGenerator>
<!-- 生成Mapper文件 -->
<sqlMapGenerator targetPackage="com.sunny.mapper" targetProject="mybatis-11_MBG/\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成Mapper接口 -->
<javaClientGenerator targetPackage="com.sunny.mapper" type="XMLMAPPER"
targetProject="mybatis-11_MBG/src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- Table To POJO -->
<!--domainObjectName="User"-->
<table tableName="user2" delimitIdentifiers="true">
<property name="useActualColumnNames" value="true" />
<generatedKey column="id" sqlStatement="JDBC" />
</table>
</context>
</generatorConfiguration>
配置文件極為重要,對(duì)應(yīng)數(shù)據(jù)庫(kù)表生成POJO對(duì)象的映射關(guān)系由配置文件完成。
運(yùn)行配置文件

Java代碼運(yùn)行:
public class Generator {
public static void main(String[] args) throws Exception {
//MBG執(zhí)行過(guò)程中的警告信息
List<String> warnings = new ArrayList<String>();
//生成代碼重復(fù)時(shí),是否覆蓋源代碼
boolean override = false;
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(in);
DefaultShellCallback callback = new DefaultShellCallback(override);
//創(chuàng)建MBG
MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
mbg.generate(null);
//輸出警告信息
for (String warn : warnings) {
System.out.println(warn);
}
}
}通過(guò)Maven插件運(yùn)行:
如果使用Maven插件,那么不需要引入mybatis-generator-core依賴,只需要引入一個(gè)Maven的插件mybatis-generator-maven-plugin
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 輸出詳細(xì)信息 -->
<verbose>true</verbose>
<!-- 覆蓋生成文件 -->
<overwrite>true</overwrite>
<!-- 定義配置文件 -->
<configurationFile>${basedir}/src/main/resources/generator-configuration.xml</configurationFile>
</configuration>
</plugin>
</plugins>通過(guò)mvn mybatis-generator:generate運(yùn)行,或者IDE一鍵運(yùn)行。
參考文獻(xiàn):
Mybatis代碼生成器Mybatis-Generator使用詳解感謝作者!
MyBatis Generator 超詳細(xì)配置感謝作者!
到此這篇關(guān)于MyBatis Generator ORM層面的代碼自動(dòng)生成器的文章就介紹到這了,更多相關(guān)MyBatis Generator 代碼自動(dòng)生成器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot2.x 接入阿里云市場(chǎng)短信發(fā)送的實(shí)現(xiàn)
本文主要介紹了springboot2.x 接入阿里云市場(chǎng)短信發(fā)送的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Java Spring 中 @PostConstruct 注解使用原理及常見場(chǎng)景
在 Java Spring 中,@PostConstruct 注解是一個(gè)非常實(shí)用的功能,它允許開發(fā)者在 Spring 容器完全初始化 Bean 后執(zhí)行某些操作,本文將詳細(xì)介紹 @PostConstruct 注解的使用,包括其原理、常見場(chǎng)景和代碼示例,2025-04-04
java用split分割字符串的一個(gè)有趣現(xiàn)象
最近在項(xiàng)目中使用了java中的split分割字符串,發(fā)現(xiàn)了一個(gè)bug,充分了展示了自己對(duì)java底層的認(rèn)知有很多的不足和欠缺。下面將這次的經(jīng)過(guò)總結(jié)出來(lái)分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12
Jmeter關(guān)聯(lián)實(shí)現(xiàn)及參數(shù)化使用解析
這篇文章主要介紹了Jmeter關(guān)聯(lián)實(shí)現(xiàn)及參數(shù)化使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
SpringBoot多租戶配置與實(shí)現(xiàn)示例
本文詳細(xì)介紹了在SpringBoot中實(shí)現(xiàn)多租戶架構(gòu)的方法和步驟,包括配置數(shù)據(jù)源、Hibernate攔截器、租戶解析器等,以共享數(shù)據(jù)庫(kù)、共享數(shù)據(jù)表的方式,確保數(shù)據(jù)隔離和安全性,感興趣的可以了解一下2024-09-09
Spring?MVC異步上傳、跨服務(wù)器上傳和文件下載功能實(shí)現(xiàn)
這篇文章主要介紹了Spring?MVC異步上傳、跨服務(wù)器上傳和文件下載功能實(shí)現(xiàn),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07

