• 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

  • 相关阅读:
    GitHub的Release下载文件中断解决方案
    Nacos笔记(一):下载安装
    【深度学习】torch中LSTM的参数详细情况
    item 安装 oh-my-zsh
    Azure IoT Edge入门(10)远程在IoT Edge设备上部署SQL数据库-Deploy Azure SQL Edge to Azure IoT Edge
    Azure IoT Edge入门(11)IoT Edge设备上的函数计算Function,使用Function写数据库-Using Azure Function On Edge device save data to Azure SQL Edge
    Azure IoT Edge入门(8)边缘设备到云的消息 及 在本地开发调试 debug Edge Module
    Azure IoT Edge入门(9)云到边缘设备控制-Azure iot edge module direct method
    通过Azure bot framework composer 设计一个AI对话机器人bot(查询天气)
    VSCode Hot Exit
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7704406.html
Copyright © 2020-2023  润新知