使用MyBatis快速生成代碼的幾種方法
一、使用MyBatis插件和EasyCdoe插件
1. 安裝插件
打開IDEA > settings > Plugins > Marketplace 安裝Free MyBatis Plugin 和 Easy Code 兩個(gè)插件

2. IDEA里配置MySQL
2.1 選擇DataSource >MySQL

2.2 連接到MySQL數(shù)據(jù)

3.根據(jù)數(shù)據(jù)庫表生成文件
3.1 連接MySQL成功界面如下。
選中需要生成文件的表,右擊EasyCode > Generate Code

3.2 選擇package和path,會(huì)將生成的文件放在你選擇的路徑下,需要什么類型的文件在template中選中,然后開始生成。

3.3 生成成功

二、mybatis-generator快速生成代碼
將mybatis-generator配置到項(xiàng)目里,將文件直接生成到指定的目錄。
1. 配置generatorConfig.xml
在項(xiàng)目src/main/resources 下新建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>
<!-- mysql-connector-java 版本需要與pom中引得版本一致 -->
<classPathEntry location="C:\.m2\repository\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 不加注釋,因?yàn)槟J(rèn)注釋是英文的 -->
<commentGenerator>
<property name="addRemarkComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!-- 數(shù)據(jù)庫連接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/sqmall?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetPackage 文件生成在指定包下,targetProject 路徑-->
<javaModelGenerator targetPackage="com.seven.mall.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.seven.mall.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- domainObjectName 即生成后entity的名字 -->
<table tableName = "mall_category" domainObjectName="Category" />
<table tableName = "mall_order" domainObjectName="Order" />
</context>
</generatorConfiguration>
2. pom.xml中配置mybatis-generator
<!-- dependency和plugin中jar的版本根據(jù)自己需求選擇,但同一個(gè)jar版本要保持一致 -->
<!-- 配置在dependencies中 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- 配置在plugins中 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<overwrite>true</overwrite> <!-- 重復(fù)生成時(shí)覆蓋掉上次生成的文件 -->
</configuration>
</plugin>
3. 輸入命令生成文件
在IDEA Terminal 或者打開命令行切換至項(xiàng)目路徑
輸入命令 mvn mybatis-generator:generate 回車即可


4. 成功生成

三、使用工具項(xiàng)目生成代碼
介紹
其實(shí)第三種方法和第二種是一樣的都是使用mybatis-generator生成。
第二種方法需要在自己的項(xiàng)目中配置一些東西
第三種方法是將這些配置,jar之類的東西拿出來做成一個(gè)項(xiàng)目,當(dāng)作工具來用,使用時(shí)只需要修改表名和生成的package路徑即可。
1. 下載工具項(xiàng)目
https://wwa.lanzoui.com/iG2Ent9yv5i
這個(gè)項(xiàng)目和第二種方法生成出來的java文件基本是一模一樣的。
但是我在mybatis-generator-core-1.3.2.jar\org\mybatis\generator\plugins\里加了一個(gè)名稱: LombokPlugin.class。會(huì)給生成的entity加上注解,這樣就不需要寫getter、setter和toString方法了.
當(dāng)然了,如果不使用lombok,那么可以刪掉這個(gè)class或者刪除生成后的注解。
2. IDEA打開項(xiàng)目,修改配置文件
2.1 修改文件生成的位置

2.2 指定數(shù)據(jù)庫表

3. 運(yùn)行并生成文件
3.1 運(yùn)行GeneratorSqlmap的main方法

3.2 生成成功
大功告成

4. 關(guān)于mybatis-generator-core中添加lombok
- 取下面的代碼,編譯為class文件:LombokPlugin.class
- 用解壓軟件打開mybatis-generator-core-1.3.2.jar
- 把編譯好的class文件放到org\mybatis\generator\plugins\下即可
感興趣的小伙伴可以自己去試一下
代碼如下:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.mybatis.generator.plugins;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.Plugin.ModelClassType;
import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.java.TopLevelClass;
public class LombokPlugin extends PluginAdapter {
public LombokPlugin() {
}
public boolean validate(List<String> list) {
return true;
}
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
topLevelClass.addImportedType("lombok.Data");
topLevelClass.addImportedType("lombok.Builder");
topLevelClass.addImportedType("lombok.NoArgsConstructor");
topLevelClass.addImportedType("lombok.AllArgsConstructor");
topLevelClass.addAnnotation("@Data");
topLevelClass.addJavaDocLine("/**");
topLevelClass.addJavaDocLine("* Created by Mybatis Generator on " + this.date2Str(new Date()));
topLevelClass.addJavaDocLine("*/");
return true;
}
public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
interfaze.addJavaDocLine("/**");
interfaze.addJavaDocLine("* Created by Mybatis Generator on " + this.date2Str(new Date()));
interfaze.addJavaDocLine("*/");
return true;
}
public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
return false;
}
public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
return false;
}
private String date2Str(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
return sdf.format(date);
}
}
以上就是使用MyBatis快速生成代碼的幾種方法的詳細(xì)內(nèi)容,更多關(guān)于MyBatis生成代碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springcloud整合到項(xiàng)目中無法啟動(dòng)報(bào)錯(cuò)Failed to start bean&n
這篇文章主要介紹了springcloud整合到項(xiàng)目中無法啟動(dòng)報(bào)錯(cuò)Failed to start bean 'eurekaAutoServiceRegistration'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Spring Mvc中傳遞參數(shù)方法之url/requestMapping詳解
在開發(fā)中,參數(shù)傳遞是必不可少的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Spring Mvc中傳遞參數(shù)方法之url/requestMapping的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
MyBatis入門實(shí)例教程之創(chuàng)建一個(gè)簡(jiǎn)單的程序
這篇文章主要介紹了MyBatis入門創(chuàng)建一個(gè)簡(jiǎn)單的程序,在?MySQL?中創(chuàng)建數(shù)據(jù)庫?mybatisdemo,編碼為?utf8,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Java并發(fā)編程之ReentrantLock實(shí)現(xiàn)原理及源碼剖析
ReentrantLock 是常用的鎖,相對(duì)于Synchronized ,lock鎖更人性化,閱讀性更強(qiáng),文中將會(huì)詳細(xì)的說明,請(qǐng)君往下閱讀2021-09-09
云計(jì)算實(shí)驗(yàn):Java?MapReduce編程
這篇文章主要介紹了云計(jì)算實(shí)驗(yàn):Java?MapReduce編程,?居于Java圍繞MapReduce編程展開詳細(xì)內(nèi)容,文章助大家掌握MapReduce編程,理解MapReduce原理,需要的朋友可以參考一下2021-12-12
Spring boot詳解緩存redis實(shí)現(xiàn)定時(shí)過期方法
本篇文章分享的就是spring boot中的一個(gè)輪子,spring cache注解的方式實(shí)現(xiàn)接口數(shù)據(jù)緩存。默認(rèn)的配置想非常簡(jiǎn)單,但是有一個(gè)弊端是緩存數(shù)據(jù)為永久緩存,本次將介紹如何設(shè)置接口緩存數(shù)據(jù)的過期時(shí)間2022-07-07

