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:WorkspaceJ2eeMyeclipsegeneratorWebRootWEB-INFlibmysql-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>
目前工程结构如下:
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>
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 }
3.4 运行
执行Generator.java程序后,所生成的代码已经生成到当前工程中;
效果如下:(显示可能有延迟,需要刷新工程才能看到生成的结果)
代码已上传,或者加右侧java的QQ群下载