MyBatis 逆向工程——根据数据表自动生成modelxml映射文件mapper接口
Posted chy_18883701161
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis 逆向工程——根据数据表自动生成modelxml映射文件mapper接口相关的知识,希望对你有一定的参考价值。
Mybatis三剑客
在使用mybatis时,以下3个组件也很常用
- MyBatis-generator mybatis逆向工程,根据数据表生成实体类、mapper接口、xml映射文件
- Mybatis-plugin mapper接口中的方法、xml映射文件中相应的元素、sql语句,快速定位
- MyBatis-PageHelper mybatis的分页组件
MyBatis Generator(MBG)的使用
MBG可以根据数据表生成对应的model、xml映射文件、mapper接口,只是简单的生成,还需要根据需求修改。
执行流程:连接数据库->获取表结构->生成文件
1、新建maven项目
pom.xml
<!-- 数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency> <!-- mybatis的依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency> <!-- mybatis-generator的依赖 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.6</version> </dependency>
2、resources下新建mybatis-generator的配置文件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> <!-- 数据库驱动的jar包 --> <!--<classPathEntry location="F:/maven/repository/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar" />--> <!-- context配置环境 --> <context id="myMBG" targetRuntime="MyBatis3"> <!-- xml文件不追加。配置同名文件覆盖时,默认只覆盖mapper接口、实体类,xml映射文件会以追加方式写入 --> <!-- 使用此插件后,不管生成多少次,同名xml映射文件都是直接覆盖 --> <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"></plugin> <!--配置生成的注释--> <commentGenerator> <!-- 去掉方法注释,默认会生成大量的方法说明注释,很不友好 --> <property name="suppressAllComments" value="true"/> <!-- 去掉注释中的时间戳 --> <property name="suppressDate" value="true"/> </commentGenerator> <!-- 数据库连接信息 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/db_user?serverTimezone=UTC" userId="chy" password="abcd"> </jdbcConnection> <!-- 配置表字段、java之间的类型转换--> <javaTypeResolver > <!-- 是否将Numeric、Decimal全部转换为BigDecimal类型,设置为false,会根据表字段的长度转换响应的类型,Short <5,Integer 5~9,Long 10~18,BigDecimal >18 --> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 配置pojo类的生成规则,主要配置实体类存放的包、该包的位置 --> <!-- mapper、实体类这些包、文件夹不需要我们手动创建,会自动创建 --> <javaModelGenerator targetPackage="com.chy.mall.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <!-- 是否去掉String两端的空格,这个可要可不要,缺省时默认为false --> <!--<property name="trimStrings" value="true" />--> </javaModelGenerator> <!-- 配置xml映射文件的生成规则 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 配置mapper接口的生成规则 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.chy.mall.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 配置要使用的数据表,需要配置mapper接口、映射文件名以及实体类名,不然tb_user生成的是TbUserMapper、TbUser --> <!-- 默认会生成大量的example相关的东西,不需要,禁用所有的example选项 --> <!-- 字段会自动完成映射,比如user_id会自动映射为userId --> <!-- 写好一个,Ctrl+D复制到下一行 --> <table tableName="tb_user" mapperName="UserMapper" domainObjectName="User" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" /> <table tableName="tb_permission" mapperName="PermissionMapper" domainObjectName="Permission" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" /> </context> </generatorConfiguration>
主要是修改数据库的连接信息、文件的生成位置、文件名称。这些元素是有顺序的,不能随意更改配置顺序。
文件名任意,因为后面要指定配置文件的位置
3、新建主类test.Test
package test; 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.IOException; import java.io.InputStream; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException { List<String> warnings = new ArrayList<String>(); //生成文件时如果已存在同名文件,会覆盖 boolean overwrite = true; //指定mybatis-generator配置文件的位置 InputStream configFile = Test.class.getResourceAsStream("/generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }
4、运行主类,将生成的文件复制到要使用的项目中,根据需要修改。
也可以直接在原项目中使用
只能生成简单的代码,复杂的还需要自己写,比如关联查询。
另一种方式 使用maven插件(推荐)
1、新建maven项目
<build> <plugins>
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.0</version> <configuration> <!-- 覆盖同名文件 --> <overwrite>true</overwrite> </configuration> </plugin>
</plugins> </build>
不需要任何依赖
2、resources下新建配置文件generatorConfig.xml
<!-- 数据库驱动的jar包 --> <classPathEntry location="F:/maven/repository/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar" />
和第一种的基本相同,区别是数据库驱动的jar包添加到classpath中都不行,必须要在配置文件中指定路径
执行插件时默认加载资源根目录下的generatorConfig.xml
3、执行maven插件mybatis-generator,生成文件
这种常用的可以搞成项目模板,以后直接用。
官网:http://mybatis.org/generator/index.html
github:https://github.com/mybatis/generator
带GUI的代码生成器:https://github.com/zouzg/mybatis-generator-gui
Mybatis-plugin 的使用
这是IDEA的一个插件,可以实现mapper接口中的方法、xml映射文件中相应的元素|sql语句之间的快速定位
在插件中搜索 mybatis plugin 安装即可,目前该插件的名称是Free MyBatis plugin,插件名称可能会变化,一般是搜索结果中下载次数最多的那个。
以上是关于MyBatis 逆向工程——根据数据表自动生成modelxml映射文件mapper接口的主要内容,如果未能解决你的问题,请参考以下文章