在开发中,我们使用Mybatis最麻烦的就是写每个表对应的Mapper接口及XML配置文件,当然还有实体类,既然每个单表都有对应的一套,那么肯定就有自动生成这些代码文件的工具,那就是代码生成器:逆向工程-MyBatis generator。
我们来搭一个逆向工程项目作为工具,以后建好表以后可以在这个工具项目中自动生成POJO类、Mapper接口、Mapper XML配置文件,然后直接拷贝到项目中使用,建议和自己编写的一套复杂的语句分开,这样加减字段后,直接重新生成就好,而且看起来比较整洁。
一、POM文件
<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><properties><java.version>1.8</java.version><spring.boot.version>2.1.13.RELEASE</spring.boot.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><groupId>com.cic.aliyun.car.insurance.generator</groupId><artifactId>mybatis-generator</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><!--mysql驱动--><!--https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.4.0</version></dependency><!--https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-maven-plugin --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>
我使用的是1.4.0版本。
二、application.properties中配置数据源
#数据源的配置spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.username=rootspring.datasource.password=rootspring.datasource.url=jdbc:mysql://localhost:3306/xinghua
三、创建一个generatorConfig.xml文件来作配置
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><contextid="testTables"targetRuntime="MyBatis3"><commentGenerator><!--是否去除自动生成的注释true:是:false:否--><propertyname="suppressAllComments"value="false"/></commentGenerator><!--数据库连接的信息:驱动类、连接地址、用户名、密码--><jdbcConnectiondriverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/xinghua"userId="root"password="root"></jdbcConnection><!--默认false,把JDBCDECIMAL和NUMERIC类型解析为Integer,为true时把JDBCDECIMAL和NUMERIC类型解析为java.math.BigDecimal--><javaTypeResolver><propertyname="forceBigDecimals"value="false"/></javaTypeResolver><!--targetProject:生成实体类的位置--><javaModelGeneratortargetPackage="com.xing.generator.model"targetProject="D:\code\newDemo\mybatis-generator\src\main\java"><!--enableSubPackages:是否让schema作为包的后缀--><propertyname="enableSubPackages"value="false"/><!--从数据库返回的值被清理前后的空格--><propertyname="trimStrings"value="true"/></javaModelGenerator><!--targetProject:mapper映射文件生成的位置--><sqlMapGeneratortargetPackage="com.xing.generator.mapper"targetProject="D:\code\newDemo\mybatis-generator\src\main\resources"><!--enableSubPackages:是否让schema作为包的后缀--><propertyname="enableSubPackages"value="false"/></sqlMapGenerator><!--targetPackage:mapper接口生成的位置--><javaClientGeneratortype="XMLMAPPER"targetPackage="com.xing.generator.dao"targetProject="D:\code\newDemo\mybatis-generator\src\main\java"><!--enableSubPackages:是否让schema作为包的后缀--><propertyname="enableSubPackages"value="false"/></javaClientGenerator><!--指定数据库表--><tabletableName="user"schema=""domainObjectName="User"></table><!--有些表的字段需要指定java类型<tableschema=""tableName=""><columnOverridecolumn=""javaType=""/></table>--></context></generatorConfiguration>这个文件里,一般只要修改指定数据表和对应的实体类名即可,这句:<!--指定数据库表--><tabletableName="user"schema=""domainObjectName="User"></table>
四、启动方法
packagecom.xing.generator; importorg.mybatis.generator.api.MyBatisGenerator; importorg.mybatis.generator.config.Configuration; importorg.mybatis.generator.config.xml.ConfigurationParser; importorg.mybatis.generator.internal.DefaultShellCallback; importjava.io.File; importjava.util.ArrayList; importjava.util.List; publicclassGeneratoerMybatis { publicvoidgenerator() throwsException { List<String>warnings=newArrayList<String>(); booleanoverwrite=true; // 指定 逆向工程配置文件FileconfigFile=newFile("D:\\code\\newDemo\\mybatis-generator\\src\\main\\resources\\generatorConfig.xml"); ConfigurationParsercp=newConfigurationParser(warnings); Configurationconfig=cp.parseConfiguration(configFile); DefaultShellCallbackcallback=newDefaultShellCallback(overwrite); MyBatisGeneratormyBatisGenerator=newMyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } publicstaticvoidmain(String[] args) { try { GeneratoerMybatisgeneratoerMybatis=newGeneratoerMybatis(); generatoerMybatis.generator(); System.out.println("生成完毕!"); }catch (Exceptione){ e.printStackTrace(); } } }
五、启动main方法测试
结果:
可以看到已经成功根据user表,在配置文件里指定的目录下,分别生成了Mapper及配置文件:
总结:
逆向工程-Mybatis Generator的搭建与使用。
END