• mybatis的逆向工程的使用


    mybatis的逆向工程

    由于mybates支持定制化sql,存储过程以及高级映射的等的特点,目前已经成为java持久层的主流符的技术。平时的mybatis的配置文件,以及持久层的接口,经常让我们的开发人员感到困扰。为此mybatis

    的团队开发了一个强大的代码生成器-Mybatis Generator,以下简称MBG 通常也叫mybatis的逆向工程,从下面几个方面来聊聊mybatis逆向工程的使用。

    mybatis逆向工程的好处

    • 可以生成数据库表中对应的实体类pojo

    • 生成Mapper的接口类,Mapper的XML文件。这些文件包含了单表的基本的操作CRUD.

    • 可以生成Example类,不过这个类型的类一般不会用到

    可以看到MBG可以极大的程度上方便我们使用mybatis,简化大量的重复工作。当然,要想了解更多的信息,可以访问: http://www.mybatis.org/generator 来获得更多的信息。

    自定义实现一个mybatis的逆向工程

    1. 数据库建两张测试的表,sql语句如下:

      DROP TABLE IF EXISTS `student`;
      CREATE TABLE `student`  (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `sno` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    `student_name` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
    `grade` double NOT NULL,
    PRIMARY KEY (`id`) USING BTREE,
    UNIQUE INDEX `student_id`(`sno`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
     -- Table structure for sys_course
    -- ----------------------------
    DROP TABLE IF EXISTS `sys_course`;
    CREATE TABLE `sys_course`  (
    `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类别',
    `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT    '课程名',
    `value` int(11) NOT NULL COMMENT '分数',
     PRIMARY KEY (`id`) USING BTREE
     ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
     SET FOREIGN_KEY_CHECKS = 1;
    

    2. 新建一个maven项目,并下载相应的依赖

     <dependencies>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
    </dependencies>
    

    3. 在recourse下新建文件夹generator并在文件夹下创建逆向工程的配置文件generatorConfig.xml 具体的配置信息如下:

     <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
     <generatorConfiguration>
    
    
    <context id="DB2Tables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    
        <!--注释生成器,并且禁止在注释中生成日期-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>
    
        <!--连接数据库的详细信息-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybaties"
                        userId="root"
                        password="chen2908">
        </jdbcConnection>
    
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
    
        <!--配置生成的包名。可以根据自己的需求进行修改-->
        <javaModelGenerator targetPackage="test.model" targetProject="srcmainjava">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
    
        <!--配置生成mapper.xml文件的位置-->
        <sqlMapGenerator targetPackage="test.dao" targetProject="srcmainjava">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
    
        <!--设置生成Mapper接口 位置,这里采用XMLMAPPER 接口和XML 完全分离-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="srcmainjava">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
    
        <!--匹配数据库中所有的表-->
        <table tableName="%">
            <generatedKey column="id" sqlStatement="Mysql"/>
        </table>
    </context>
    

    4. 创建逆向工程的启动类;

      package chen.mybatis;
    
      /**
      * @Author Chen
       * @Date 2020/3/15 20:26
       * 读取MBG的配置生成代码
     **/
    public class Generator {
    public static void main(String[] args) throws Exception{
    
        // 警告信息
        List<String> warnings = new ArrayList<String>();
        // 当生成代码重复时,覆盖原代码
        boolean overwrite = true;
    
        // 读取配置文件
        InputStream inputStream = Generator.class.getResourceAsStream("/generator/generatorConfig.xml");
        ConfigurationParser configurationParser = new ConfigurationParser(warnings);
        Configuration configuration = configurationParser.parseConfiguration(inputStream);
        inputStream.close();
    
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        // 创建MBG
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(configuration,callback,warnings);
    
        // 执行生成代码的逻辑
        myBatisGenerator.generate(null);
        // 输出警告信息
        for (String warning : warnings) {
            System.out.println(warning);
        }
    }
    }
    

    5.运行生成的代码如下所示:

    这样就完成了代码的生成工作

    配置文件generatorConfig.xml的具体说明

    了解配置文件的具体配置的内容,可以更加方便的适应自己的开发需求。下面就对generatorConfig.xml配置文件的具体信息进行说明:

    • 首要按照MBG 要求添加XML 文件头:

    这个文件头中的mybatis-generator-config_1_0.dtd用来定义该配置文件中的标签和属性的。在文件头之后需要写上

     <generatorConfiguration> 
        ......
     <generatorConfiguration>
    
    • context 属性 targetRuntime 设置为 MyBatis3Simple 防止生成与EXample相关的代码和方法,如果需要Example的代码,可以将其设置为 MyBatis3

    • context 属性 defalutModelType设置为 flat,目的是每个表只生成一个实体类。

    • 注释生成器commentGenerator,并且禁止在注释中生成日期

    • jdbcConnection,配置连接数据库的信息

    • javaModelGenerator 配置生成的包名。可以根据自己的需求进行修改,这里配置的包是test.model。 targetProject配置子啊srcmainjava

    • sqlMapGenerator,配置生成mapper.xml文件的位置 这里配置在包test.dao下

    • javaClientGenerator Mapper接口的配置位置 这里配置在了test.dao下。

    • table 匹配数据库中的表,可以单表匹配,只需要将tableName的值改为表名就可以了,这里采用的通配符% 匹配所有的表、,并且指定所有的表都有主键id, 因为连接的是mysql的数据库,所以sqlStatement就设置为mysql.

    参考书籍: 《mybatis从入门到精通》 刘增辉

  • 相关阅读:
    django模型系统(二)
    css基础
    css进阶
    django模型系统(一)
    自定义过滤器及标签
    django模板标签
    模板变量及模板过滤器
    第六章 异常
    第三章:多态
    第三章:提高系统性能:从数据访问开始
  • 原文地址:https://www.cnblogs.com/chentang/p/12504112.html
Copyright © 2020-2023  润新知