使用MyBatis快速生成代码的几种方法
作者:鱼辞
一、使用MyBatis插件和EasyCdoe插件
1. 安装插件
打开IDEA > settings > Plugins > Marketplace 安装Free MyBatis Plugin 和 Easy Code 两个插件
2. IDEA里配置MySQL
2.1 选择DataSource >MySQL
2.2 连接到MySQL数据
3.根据数据库表生成文件
3.1 连接MySQL成功界面如下。
选中需要生成文件的表,右击EasyCode > Generate Code
3.2 选择package和path,会将生成的文件放在你选择的路径下,需要什么类型的文件在template中选中,然后开始生成。
3.3 生成成功
二、mybatis-generator快速生成代码
将mybatis-generator配置到项目里,将文件直接生成到指定的目录。
1. 配置generatorConfig.xml
在项目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"> <!-- 不加注释,因为默认注释是英文的 --> <commentGenerator> <property name="addRemarkComments" value="true"/> <property name="suppressDate" value="true"/> </commentGenerator> <!-- 数据库连接信息 --> <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的版本根据自己需求选择,但同一个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> <!-- 重复生成时覆盖掉上次生成的文件 --> </configuration> </plugin>
3. 输入命令生成文件
在IDEA Terminal 或者打开命令行切换至项目路径
输入命令 mvn mybatis-generator:generate 回车即可
4. 成功生成
三、使用工具项目生成代码
介绍
其实第三种方法和第二种是一样的都是使用mybatis-generator生成。
第二种方法需要在自己的项目中配置一些东西
第三种方法是将这些配置,jar之类的东西拿出来做成一个项目,当作工具来用,使用时只需要修改表名和生成的package路径即可。
1. 下载工具项目
https://wwa.lanzoui.com/iG2Ent9yv5i
这个项目和第二种方法生成出来的java文件基本是一模一样的。
但是我在mybatis-generator-core-1.3.2.jar\org\mybatis\generator\plugins\里加了一个名称: LombokPlugin.class。会给生成的entity加上注解,这样就不需要写getter、setter和toString方法了.
当然了,如果不使用lombok,那么可以删掉这个class或者删除生成后的注解。
2. IDEA打开项目,修改配置文件
2.1 修改文件生成的位置
2.2 指定数据库表
3. 运行并生成文件
3.1 运行GeneratorSqlmap的main方法
3.2 生成成功
大功告成
4. 关于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快速生成代码的几种方法的详细内容,更多关于MyBatis生成代码的资料请关注脚本之家其它相关文章!