Mybatis 逆向工程 自动生成代码

不羁岁月 提交于 2019-12-25 03:49:16

Mybatis 可以通过一定的代码,自动生成包括mapper.xml、mapper.java、po等文件;

一、环境准备:

用到的JAR包如下:

文件只有两个:GenMain.java和generatorConfig.xml文件,都放在src目录下。

二、实现方法

1、新建一个JAVA项目,

GenMain.java(主文件)

 1 import java.io.File;  
 2 import java.io.IOException;  
 3 import java.sql.SQLException;  
 4 import java.util.ArrayList;  
 5 import java.util.List;  
 6   
 7 import org.mybatis.generator.api.MyBatisGenerator;  
 8 import org.mybatis.generator.config.Configuration;  
 9 import org.mybatis.generator.config.xml.ConfigurationParser;  
10 import org.mybatis.generator.exception.InvalidConfigurationException;  
11 import org.mybatis.generator.exception.XMLParserException;  
12 import org.mybatis.generator.internal.DefaultShellCallback;  
13   
14 public class GenMain {  
15     public static void main(String[] args) {  
16         List<String> warnings = new ArrayList<String>();  
17         boolean overwrite = true;  
18         String genCfg = "generatorConfig.xml";  
19         File configFile = new File(GenMain.class.getResource(genCfg).getFile());  
20         ConfigurationParser cp = new ConfigurationParser(warnings);  
21         Configuration config = null;  
22         try {  
23             config = cp.parseConfiguration(configFile);  
24         } catch (IOException e) {  
25             e.printStackTrace();  
26         } catch (XMLParserException e) {  
27             e.printStackTrace();  
28         }  
29         DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
30         MyBatisGenerator myBatisGenerator = null;  
31         try {  
32             myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  
33         } catch (InvalidConfigurationException e) {  
34             e.printStackTrace();  
35         }  
36         try {  
37             myBatisGenerator.generate(null);  
38         } catch (SQLException e) {  
39             e.printStackTrace();  
40         } catch (IOException e) {  
41             e.printStackTrace();  
42         } catch (InterruptedException e) {  
43             e.printStackTrace();  
44         }  
45     }  
46 }  

配置文件:generatorConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration
 3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 5 
 6 <generatorConfiguration>
 7     <context id="testTables" targetRuntime="MyBatis3">
 8         <commentGenerator>
 9             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
10             <property name="suppressAllComments" value="true" />
11         </commentGenerator>
12         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
13         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
14             connectionURL="jdbc:mysql://localhost:3306/mybatis" 
15             userId="root"
16             password="123456">
17         </jdbcConnection>
18 
19         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
20             NUMERIC 类型解析为java.math.BigDecimal -->
21         <javaTypeResolver>
22             <property name="forceBigDecimals" value="false" />
23         </javaTypeResolver>
24 
25         <!-- targetProject:生成PO类的位置 -->
26         <javaModelGenerator targetPackage="com.itheima.mybatis.po"
27             targetProject=".\src">
28             <!-- enableSubPackages:是否让schema作为包的后缀 -->
29             <property name="enableSubPackages" value="false" />
30             <!-- 从数据库返回的值被清理前后的空格 -->
31             <property name="trimStrings" value="true" />
32         </javaModelGenerator>
33         <!-- targetProject:mapper映射文件生成的位置 -->
34         <sqlMapGenerator targetPackage="com.itheima.mybatis.mapper" 
35             targetProject=".\src">
36             <!-- enableSubPackages:是否让schema作为包的后缀 -->
37             <property name="enableSubPackages" value="false" />
38         </sqlMapGenerator>
39         <!-- targetPackage:mapper接口生成的位置 -->
40         <javaClientGenerator type="XMLMAPPER"
41             targetPackage="com.itheima.mybatis.mapper" 
42             targetProject=".\src">
43             <!-- enableSubPackages:是否让schema作为包的后缀 -->
44             <property name="enableSubPackages" value="false" />
45         </javaClientGenerator>
46         <!-- 指定数据库表 -->
47         <table schema="" tableName="user"></table>
48         <table schema="" tableName="orders"></table>
49         <table schema="" tableName="orderdetail"></table>
50         <table schema="" tableName="items"></table>
51 
52         <!-- 有些表的字段需要指定java类型
53          <table schema="" tableName="">
54             <columnOverride column="" javaType="" />
55         </table> -->
56     </context>
57 </generatorConfiguration>

 数据库基本配置和生成文件的目录,都在上述文件中配置;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!