Mybatis-Generator tool to help us automatically create pojo class, mapper file and dao class and will help us configure their dependencies.
Official documents Address: http://mybatis.org/generator/running/running.html
1: First spring boot pom dependencies introduced
<-! MyBatis Generator -> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.7</version> </dependency> <-! Mybatis its dependencies -> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <-! Mysql database-driven -> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.5</version> </dependency>
2: Project / src / main / resources directory New File 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> <properties resource="generator.properties"/> <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat"> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <property name="javaFileEncoding" value="UTF-8"/> <! - The method of generating a sequence of model -> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <! - create a toString method for the generation of the Java model -> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <-! Overwrite the original file when generating mapper.xml -> <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /> <commentGenerator type="com.chuanmian.store.CommentGenerator"> <! - whether to remove the automatically generated annotations true: is: false: No -> <property name="suppressAllComments" value="true"/> <property name="suppressDate" value="true"/> <property name="addRemarkComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}"> <! - to solve the problem does not generate code for the specified database mysql driver after upgrading to 8.0 -> <property name="nullCatalogMeansCurrent" value="true" /> </jdbcConnection> <javaModelGenerator targetPackage="com.xx.store.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.xx.store.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.xx.store.mapper" targetProject="src/main/java"/> <! - generate all set to table tableName% -> <table tableName="%"> <generatedKey column="product_id" sqlStatement="MySql" identity="true"/> </table> </context> </generatorConfiguration>
3: Project / src / main / resources directory New File generator.properties
jdbc.driverClass=com.mysql.jdbc.Driver jdbc.connectionURL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 jdbc.userId=root jdbc.password=123456
Note: If the mysql driver version is too high, jdbc.driverClass = com.mysql.cj.jdbc.Driver
4: Depending on the configuration information created in generatorConfig.xml package name (if not created, then it will error)
src/main/java 下 com.xx.store.model src/main/resources 下 com.xx.store.mapper src/main/java 下 com.chuanmian.store.mapper
5: Create a file generated classes Generator.java in com.xx.store package directory
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; public class Generator { public static void main(String[] args) throws Exception { Warning information process // MBG execution List<String> warnings = new ArrayList<String>(); @ When the code generated by repeating, covering the original code boolean overwrite = true; // read our profile MBG InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(is); is.close(); DefaultShellCallback callback = new DefaultShellCallback(overwrite); // Create MBG MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); // generated code execution myBatisGenerator.generate(null); // output a warning message for (String warning : warnings) { System.out.println(warning); } } }
6: Create a custom annotation generator CommentGenerator.java in com.xx.store package directory
import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.CompilationUnit; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType; import org.mybatis.generator.internal.DefaultCommentGenerator; import org.mybatis.generator.internal.util.StringUtility; import java.util.Properties; /** * Custom annotations generator * */ public class CommentGenerator extends DefaultCommentGenerator { private boolean addRemarkComments = false; private static final String EXAMPLE_SUFFIX="Example"; private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty"; /** * Set user-configurable parameters */ @Override public void addConfigurationProperties(Properties properties) { super.addConfigurationProperties(properties); this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments")); } /** * Fields to add comments */ @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { String remarks = introspectedColumn.getRemarks(); // Remarks Remarks information based on parameters and information to determine whether to add if(addRemarkComments&&StringUtility.stringHasValue(remarks)){ // addFieldJavaDoc(field, remarks); // database need to escape special characters if(remarks.contains("\"")){ remarks = remarks.replace("\"","'"); } // add fields to the model of swagger comment field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")"); } } /** * Fields add a comment to model */ private void addFieldJavaDoc(Field field, String remarks) { // start documentation comments field.addJavaDocLine("/**"); // Get the information database field notes String[] remarkLines = remarks.split(System.getProperty("line.separator")); for(String remarkLine:remarkLines){ field.addJavaDocLine(" * "+remarkLine); } addJavadocTag(field, false); field.addJavaDocLine(" */"); } @Override public void addJavaFileComment(CompilationUnit compilationUnit) { super.addJavaFileComment(compilationUnit); // add only import swagger notes in class in the model if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){ compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME)); } } }
Note: pom needs to add swagger rely on, I did not write because my swagger in public works, directly related to the project
7: Perform Generator.java in the main method can be successfully generated a very, very convenient.
Hoping to help you!
Reference Links: https://www.cnblogs.com/fxl-njfu/p/10039694.html
Reference Links: https://www.cnblogs.com/liaojie970/p/8032481.html
Reference Links: https://blog.csdn.net/qiaqia609/article/details/80956266