mybatis逆向工程(MyBatis Generator)

Java框架

浏览数:57

2019-7-26

mybatis逆向工程(MyBatis Generator)

1. 什么是mybatis逆向工程

mybatis官方为了提高开发效率,提高自动对单表生成sql,包括 :mapper.xml、mapper.java、表名.java(po类)

在企业开发中通常是在设计阶段对表进行设计 、创建。

在开发阶段根据表结构创建对应的po类。

mybatis逆向工程的方向:由数据库表—-》java代码

2. 逆向工程创建(方式一)

2.1 逆向工程使用配置

本实例使用通过java程序运行逆向工程;

逆向工程运行所需要的jar包:

 

2.2. generator.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 <generatorConfiguration>
 6    <!-- 1、连接数据库的驱动包路径 -->
 7     <classPathEntry location="D:\WorkspaceJ2eeMyeclipse\generator\WebRoot\WEB-INF\lib\mysql-connector-java-5.1.44-bin.jar" /> 
 8 
 9   <context id="DB2Tables" targetRuntime="MyBatis3">
10     <!-- 1、连接数据库的地址和驱动:数据库链接URL、用户名、密码 -->
11     <jdbcConnection driverClass="com.mysql.jdbc.Driver"
12         connectionURL="jdbc:mysql://localhost:3306/elec"
13         userId="root"
14         password="123456">
15     </jdbcConnection>
16 
17     <javaTypeResolver >
18       <property name="forceBigDecimals" value="false" />
19     </javaTypeResolver>
20     
21     <!-- 生成模型的包名和位置 --> 
22     <javaModelGenerator targetPackage="com.mmzs.pojo" targetProject="generator">
23       <property name="enableSubPackages" value="true" />
24       <property name="trimStrings" value="true" />
25     </javaModelGenerator>
26     
27      <!-- 生成的映射文件包名和位置 -->
28     <sqlMapGenerator targetPackage="com.mmzs.mapper"  targetProject="generator">
29       <property name="enableSubPackages" value="true" />
30     </sqlMapGenerator>
31     
32      <!-- 生成DAO的包名和位置 --> 
33     <javaClientGenerator type="XMLMAPPER" targetPackage="com.mmzs.mapper"  targetProject="generator">
34       <property name="enableSubPackages" value="true" />
35     </javaClientGenerator>
36     
37     <!-- 要生成那些表(更改tableName和domainObjectName就可以) --> 
38     <table  tableName="testkeycount" domainObjectName="KeyCountbean" 
39        enableCountByExample="false" enableUpdateByExample="false"
40                enableDeleteByExample="false" enableSelectByExample="false"
41                selectByExampleQueryId="false">
42     </table>
43  
44      <table  tableName="testnum" domainObjectName="Numbean" 
45        enableCountByExample="false" enableUpdateByExample="false"
46                enableDeleteByExample="false" enableSelectByExample="false"
47                selectByExampleQueryId="false">
48     </table>
49     <!--  <table tableName="t_student" domainObjectName="StuBean"/> -->
50 
51   </context>
52 </generatorConfiguration>

generator.xml

 目前工程结构如下:

2.3 运行

然后右击generator.xml文件===>>单击”Generator MyBatis/iBATIS Artifacts”按钮,此时就自动生成成功了;

效果如下:

代码已上传,或者加右侧java的QQ群下载

3. 逆向工程创建(方式二)

3.1 逆向工程使用配置

本实例使用通过java程序运行逆向工程;

逆向工程运行所需要的jar包:

3.2 配置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="false" />
11         </commentGenerator>
12         
13         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
14         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
15             connectionURL="jdbc:mysql://localhost:3306/elec" 
16             userId="root"
17             password="123456">
18         </jdbcConnection>
19         
20         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
21             NUMERIC 类型解析为java.math.BigDecimal -->
22         <javaTypeResolver>
23             <property name="forceBigDecimals" value="false" />
24         </javaTypeResolver>
25 
26         <!-- targetProject:生成PO类的位置 -->
27         <javaModelGenerator targetPackage="com.mmzs.pojo"
28             targetProject=".\src">
29             <!-- enableSubPackages:是否让schema作为包的后缀 -->
30             <property name="enableSubPackages" value="false" />
31             <!-- 从数据库返回的值被清理前后的空格 -->
32             <property name="trimStrings" value="true" />
33         </javaModelGenerator>
34         
35         <!-- targetProject:mapper映射文件生成的位置 -->
36         <sqlMapGenerator targetPackage="com.mmzs.mapper" 
37             targetProject=".\src">
38             <!-- enableSubPackages:是否让schema作为包的后缀 -->
39             <property name="enableSubPackages" value="false" />
40         </sqlMapGenerator>
41         
42         <!-- targetPackage:mapper接口生成的位置 -->
43         <javaClientGenerator type="XMLMAPPER"
44             targetPackage="com.mmzs.mapper" 
45             targetProject=".\src">
46             <!-- enableSubPackages:是否让schema作为包的后缀 -->
47             <property name="enableSubPackages" value="false" />
48         </javaClientGenerator>
49         
50         <!-- 指定数据库表 -->
51         <table schema="" tableName="testnum"></table>
52         <table schema="" tableName="testkeycount"></table>
53         <table schema="" tableName="user"></table>
54 
55     </context>
56 </generatorConfiguration>

generatorConfig.xml

3.3 配置需要执行的java程序


 1 package com.mmzs.generator;
 2 
 3 
 4 import java.io.File;
 5 import java.io.IOException;
 6 import java.util.ArrayList;
 7 import java.util.List;
 8 
 9 import org.mybatis.generator.api.MyBatisGenerator;
10 import org.mybatis.generator.config.Configuration;
11 import org.mybatis.generator.config.xml.ConfigurationParser;
12 import org.mybatis.generator.exception.XMLParserException;
13 import org.mybatis.generator.internal.DefaultShellCallback;
14 
15 public class Generator {
16 
17     public static void main(String[] args) throws Exception {
18         try {
19             Generator generatorSqlmap = new Generator();
20             generatorSqlmap.generator();
21             System.out.println("逆向工程自动创建完成");
22         } catch (Exception e) {
23             e.printStackTrace();
24         }
25     }
26     
27     
28     //调用generatorConfig.xml文件,根据其配置自动生成
29     public void generator() throws Exception{
30         List<String> warnings = new ArrayList<String>();
31         boolean overwrite = true;
32         //指定 逆向工程配置文件
33         File configFile = new File("generatorConfig.xml"); 
34         ConfigurationParser cp = new ConfigurationParser(warnings);
35         Configuration config = cp.parseConfiguration(configFile);
36         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
37         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
38                 callback, warnings);
39         myBatisGenerator.generate(null);
40     } 
41 
42 }

Generator.java

3.4 运行

执行Generator.java程序后,所生成的代码已经生成到当前工程中;

效果如下:(显示可能有延迟,需要刷新工程才能看到生成的结果)

代码已上传,或者加右侧java的QQ群下载

 

作者:淼淼之森