spring boot中使用mybatis逆向工程
现在人懒得写dao,mapper,mapper.xml,所以有了逆向工程,只要根据数据库的表就给你生成对应的文件,十分方便。
当然,对于mapper肯定方法还是不够的,需要自己添加。
首先导入所需要的依赖:
org.mybatis.generator
mybatis-generator-core
1.3.5
com.alibaba
druid-spring-boot-starter
1.1.10
mysql
mysql-connector-java
5.1.46
runtime
org.projectlombok
lombok
1.18.8
我这里使用的是druid数据源,所以引入了对应的依赖,和mysql驱动。
还引入了lombok,这个需要安装插件,节省代码,方便开发,这些和逆向工程没关系的。
核心就是这几个文件,当然最核心的是generatorConfig.xml文件,其余的可以没有。比如GeneratorUtil是使用java代码来生成,但你也可以使用插件去生成。
generator.properties配的属性只是给generatorConfig.xml使用的,你可以不要这个配置文件,在generatorConfig.xml直接写死。
generator.properties:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/music jdbc.userId=root jdbc.pwd=123456
数据库连接属性自己更改。
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">
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
注释已经写得很明白了,注意对应的路径不要配错就ok。
GeneratorUtil:
package com.sunsas.mymusic.base; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.exception.InvalidConfigurationException; import org.mybatis.generator.exception.XMLParserException; import org.mybatis.generator.internal.DefaultShellCallback; import java.io.File; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class GeneratorUtil { public void testGenerator() throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException { Listwarnings=new ArrayList (); boolean overWriter=true; //指向配置文件 File configFile=new File(GeneratorUtil.class.getResource("/setting/generatorConfig.xml").getFile()); ConfigurationParser cp=new ConfigurationParser(warnings); Configuration config=cp.parseConfiguration(configFile); DefaultShellCallback callback=new DefaultShellCallback(overWriter); MyBatisGenerator myBatisGenerator=new MyBatisGenerator(config,callback,warnings); myBatisGenerator.generate(null); } public static void main(String[] args)throws Exception { GeneratorUtil generatorTest=new GeneratorUtil(); generatorTest.testGenerator(); } }
这个就是执行java代码来逆向生成。关于插件的逆向生成就懒得说了,每次都要修改参数,有些麻烦。
运行就ok了。
如果想让生成的实体类具有注释。可以在generatorConfig.xml加上配置:
"com.sunsas.mall.mbg.CommentGenerator">
"suppressAllComments" value="true"/>
"suppressDate" value="true"/>
"addRemarkComments" value="true"/>
CommentGenerator:
package com.sunsas.mall.mbg; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.internal.DefaultCommentGenerator; import org.mybatis.generator.internal.util.StringUtility; import java.util.Properties; /** * 自定义注释生成器 * Created by macro on 2018/4/26. */ public class CommentGenerator extends DefaultCommentGenerator { private boolean addRemarkComments = false; /** * 设置用户配置的参数 */ @Override public void addConfigurationProperties(Properties properties) { super.addConfigurationProperties(properties); this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments")); } /** * 给字段添加注释 */ @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { String remarks = introspectedColumn.getRemarks(); //根据参数和备注信息判断是否添加备注信息 if (addRemarkComments && StringUtility.stringHasValue(remarks)) { addFieldJavaDoc(field, remarks); } } /** * 给model的字段添加注释 */ private void addFieldJavaDoc(Field field, String remarks) { //文档注释开始 field.addJavaDocLine("/**"); //获取数据库字段的备注信息 String[] remarkLines = remarks.split(System.getProperty("line.separator")); for (String remarkLine : remarkLines) { field.addJavaDocLine(" * " + remarkLine); } addJavadocTag(field, false); field.addJavaDocLine(" */"); } }