1:pom文件引入依赖
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> <dependencies> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.3</version> </dependency> </dependencies> </plugin> </plugins> </build>2:generatorConfig.xml文件配置(引入自定义LombokPlugin类,实现不生成getset方法)
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <!--引入generator插件--> <plugin type="tk.mybatis.mapper.generator.MapperPlugin"> <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/> <property name="caseSensitive" value="true"/> </plugin> <!--引入自定义LombokPlugin类,重写方法不生成getset方法--> <plugin type="com.myself.lucode.mbg.LombokPlugin" > <property name="hasLombok" value="true"/> </plugin> <commentGenerator type="com.xxx.CommentGenerator"> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> <property name="addRemarkComments" value="true"/> </commentGenerator> <!--数据库地址配置--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/lucode?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false" userId="root" password="root"> </jdbcConnection> <!--mode生成路径--> <javaModelGenerator targetPackage="com.myself.lucode.entity.pmsBrand" targetProject="src/main/java"/> <!--xml生成路径--> <sqlMapGenerator targetPackage="mapper.pmsBrand" targetProject="src/main/resources"/> <!--mapper生成路径--> <javaClientGenerator targetPackage="com.myself.lucode.mapper.pmsBrand" targetProject="src/main/java" type="XMLMAPPER"/> <!--表名--> <table tableName="oms_order"> <generatedKey column="id" sqlStatement="JDBC"/> </table> </context> </generatorConfiguration>3:创建GeneratorMain启动类
import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; import java.io.InputStream; import java.util.ArrayList; import java.util.List; /** * @Author LK * @Date 2020/7/2 * @Time 12:15 */ public class GeneratorMain { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<String>(); // 当生成的代码重复时,覆盖原代码 boolean overwrite = true; // 读取 MBG 配置文件 InputStream is = GeneratorMain.class.getResourceAsStream("/generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(is); is.close(); DefaultShellCallback callback = new DefaultShellCallback(overwrite); // 创建 MBG MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); // 执行生成代码 myBatisGenerator.generate(null); // 输出警告信息 for (String warning : warnings) { System.out.println(warning); } } }4:创建LombokPlugin重写生成getset方法,以及添加@Data注解
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.dom.java.FullyQualifiedJavaType; import org.mybatis.generator.api.dom.java.Interface; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.TopLevelClass; /** * @Author LK * 不生成set,get方法,在类上添加lombok注解,例如@Data * @Date 2020/7/2 * @Time 14:12 */ public class LombokPlugin extends PluginAdapter { public boolean validate(List<String> list) { return true; } @Override public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { //引入mode的@Data import包路径 topLevelClass.addImportedType("lombok.Data"); // 添加mode的注解 topLevelClass.addAnnotation("@Data"); // 添加mode的注释 topLevelClass.addJavaDocLine("/**"); topLevelClass.addJavaDocLine("* @ClassName: " + topLevelClass.getType().getShortName()); topLevelClass.addJavaDocLine("* @Description: "); topLevelClass.addJavaDocLine("* @author: LK"); topLevelClass.addJavaDocLine("* @date " + date2Str(new Date())); topLevelClass.addJavaDocLine("*/"); return true; } @Override public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { // Mapper文件的注释 interfaze.addJavaDocLine("/**"); interfaze.addJavaDocLine("* @ClassName: " + interfaze.getType().getShortName()); interfaze.addJavaDocLine("* @Description: "); interfaze.addJavaDocLine("* @author: LK"); interfaze.addJavaDocLine("* @date " + date2Str(new Date())); interfaze.addJavaDocLine("*/"); interfaze.addImportedType(new FullyQualifiedJavaType("org.springframework.stereotype.Repository")); interfaze.addAnnotation("@Repository"); return true; } @Override public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { // 不生成getter return false; } @Override public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { // 不生成setter return false; } private String date2Str(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 ahh:mm:ss"); return sdf.format(date); } } 5:运行启动类看效果