zoukankan      html  css  js  c++  java
  • Mybatis系列(五):mybatis逆向工程

    一、背景        

            在实际开发中我们会自己去写mapper映射文件,接口,数据库表对应的实体类,如果需求任务比较少,咱们还可以慢慢的一个一个去写,但是这是不现实的,因为在工作中我们的任务是很多的,这时mybatis逆向工程就能帮助我们节省这部分的时间了,因为mybatis逆向工程能根据数据库的表结构生成对应的mapper映射文件,接口,实体类

    二、实践

    1. 新建一个mybatis逆向工程测试的项目MybatisReverseProject和生成文件存放的项目MybatisTest,使用的mybatis-generator-core是借鉴githup上的一个兄弟改写源码的,他的已经能满足我的需求了,有需要的同学可以自己去改写,改写内容如下:

                 生成的*mapper.xml文件中使用4个空格来缩进
                 生成的*mapper.xml文件中每个元素间增加一空行,如insert,update,delete等之间增加一空行
                 去掉*mapper.xml文件中生成的注释
                 根据数据库表名及字段的注释为Java类、属性增加注释,可以在源码org.mybatis.generator.internal.db.DatabaseIntrospector.java类中根据个人情况进行修改
                 实现每次生成都覆盖生成文件

             

         

     2.在数据库里面建立需要使用的表

    1 CREATE TABLE `t_user` (
    2   `id` int(11) NOT NULL AUTO_INCREMENT,
    3   `username` varchar(30) NOT NULL COMMENT '用户名称',
    4   `birthday` date DEFAULT NULL COMMENT '生日',
    5   `sex` char(2) DEFAULT NULL COMMENT '性别',
    6   `address` varchar(256) DEFAULT NULL COMMENT '地址',
    7   PRIMARY KEY (`id`)
    8 ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户信息表';

    3. 在generatorConfig.xml文件中配置数据库连接的信息,配置生成实体类的位置、生成mapper映射文件生成的位置、生成mapper接口生成的位置,以上配置的3个路径为你项目的路径;指定要逆向生成代码的数据库的表

     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         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
    14             connectionURL="jdbc:mysql://localhost:3306/study" userId="root"
    15             password="123456">
    16         </jdbcConnection> 
    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:生成实体类的位置 -->
    27         <javaModelGenerator targetPackage="com.study.mybatis.entiy"
    28             targetProject="D:workspaceMybatisTestsrcmainjava">
    29             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    30             <property name="enableSubPackages" value="false" />
    31             <!-- 从数据库返回的值被清理前后的空格 -->
    32             <property name="trimStrings" value="true" />
    33         </javaModelGenerator>
    34         <!-- targetProject:mapper映射文件生成的位置 -->
    35         <sqlMapGenerator targetPackage="com.study.mybatis.mapper"
    36             targetProject="D:workspaceMybatisTestsrcmainjava">
    37             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    38             <property name="enableSubPackages" value="false" />
    39         </sqlMapGenerator>
    40         <!-- targetPackage:mapper接口生成的位置 -->
    41         <javaClientGenerator type="XMLMAPPER"
    42             targetPackage="com.study.mybatis.dao" targetProject="D:workspaceMybatisTestsrcmainjava">
    43             <!-- enableSubPackages:是否让schema作为包的后缀 -->
    44             <property name="enableSubPackages" value="false" />
    45         </javaClientGenerator>
    46 
    47         <!-- 指定数据库表 -->
    48         <table tableName="t_user" schema="" enableCountByExample="false"
    49             enableDeleteByExample="false" enableUpdateByExample="false"
    50             enableSelectByExample="false" selectByExampleQueryId="false"></table>
    51 
    52         <!-- 有些表的字段需要指定java类型 <table schema="" tableName=""> <columnOverride column="" 
    53             javaType="" /> </table> -->
    54     </context>
    55 </generatorConfiguration>

    4. 启动主程序GeneratorSqlmap.java生成需要的文件

     1 package com.lgs.reverse.start;
     2 
     3 import java.io.File;
     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.internal.DefaultShellCallback;
    11 
    12 /**
    13  * 根据数据库定义的表结构生成实体类、接口、mapper映射文件的主类
    14  * 使用的mybatis-generator-core是借鉴githup上的一个兄弟改写源码的, 他的已经能满足我的需求了有需要的同学可以自己去改写
    15  * 
    16  * @author lgs
    17  *
    18  */
    19 public class GeneratorSqlmap {
    20 
    21     public void generator() throws Exception {
    22 
    23         List<String> warnings = new ArrayList<String>();
    24         boolean overwrite = true;
    25         // 指定 逆向工程配置文件
    26         File configFile = new File("config/generatorConfig.xml");
    27         ConfigurationParser cp = new ConfigurationParser(warnings);
    28         Configuration config = cp.parseConfiguration(configFile);
    29         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    30         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
    31         myBatisGenerator.generate(null);
    32 
    33     }
    34 
    35     public static void main(String[] args) throws Exception {
    36         try {
    37             GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
    38             generatorSqlmap.generator();
    39         } catch (Exception e) {
    40             e.printStackTrace();
    41         }
    42 
    43     }
    44 
    45 }

    5. 需要完整项目的同学可以去我的githup上下载,下载地址https://github.com/leeSmall/MybatisReverseProject

  • 相关阅读:
    hdu 5646 DZY Loves Partition
    bzoj 1001 狼抓兔子 平面图最小割
    poj 1815 Friendship 最小割 拆点 输出字典序
    spoj 1693 Coconuts 最小割 二者取其一式
    hdu 5643 King's Game 约瑟夫环变形
    约瑟夫环问题
    hdu 5642 King's Order
    CodeForces 631C Report
    1039: C语言程序设计教程(第三版)课后习题9.4
    1043: C语言程序设计教程(第三版)课后习题10.1
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7704406.html
Copyright © 2011-2022 走看看