zoukankan      html  css  js  c++  java
  • 通用Mapper(七)逆向工程

    一、逆向工程

      1、原生 MyBatis 逆向工程与通用 Mapper 逆向工程对比

        

      2、参考文档地址

          Github地址:

          通用Mapper博客:https://mapperhelper.github.io/docs/

          MyBatis Generator 插件:https://mapperhelper.github.io/docs/3.usembg/

          Mybatis Geneator 详解:http://git.oschina.net/free/Mybatis_Utils/tree/master/MybatisGeneator/MybatisGeneator.md

      3、逆向工程创建(Maven方式)

        使用Maven插件的一个好处是可以将Maven中的属性使用${property}形式在generatorConfig.xml中引用。

        先看Maven的pom.xml文件(只显示有关的部分内容):

        (1)在 Maven的 pom.xml 中properties声明

        <properties>
    
            <!--
                ${basedir}:引用工程的根目录
                targetJavaProject:声明存放源码的目录位置
                targetMapperPackage:声明MBG生成xxxMapper接口后存放的package位置
                targetModelPackage:声明MBG生成实体类后存放的package位置
    
                targetResourcesProject:声明存放资源文件和XML配置文件的目录位置
                targetXMLPackage:声明存放具体XxxMapper.xml 文件的目录位置
            -->
            <!--  MyBatis Generator  -->
            <!--  Java接口和实体类  -->
            <targetJavaProject>${basedir}/src/main/java</targetJavaProject>
            <targetMapperPackage>com.njf.mapper.mappers</targetMapperPackage>
            <targetModelPackage>com.njf.mapper.model</targetModelPackage>
            <!--  XML生成路径  -->
            <targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
            <targetXMLPackage>mappers</targetXMLPackage>
            <!--  依赖版本  -->
            <!--
                mapper.version:通用mapper版本
            -->
            <mapper.version>4.0.0-beta3</mapper.version>
            <mysql.version>5.1.6</mysql.version>
        </properties>

          上面是pom.xml中properties配置的部分内容。这里配置了MBG配置文件中常用到的几个路径以及包名。还包含了通用Mapper的版本和数据库JDBC驱动的版本。 

        (2)在 pom 文件中添加 plugin 配置(MBG的Maven插件配置)

        <build>
            <plugins>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
    
                    <!--
                        配置generatorConfig.xml配置文件的路径
                    -->
                    <configuration>
                        <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                        <overwrite>true</overwrite>
                        <verbose>true</verbose>
                    </configuration>
    
                    <!--
                        MBG插件的依赖信息
                    -->
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>${mysql.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>tk.mybatis</groupId>
                            <artifactId>mapper</artifactId>
                            <version>${mapper.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>

          这里配置了MBG插件,并且配置了generatorConfig.xml配置文件的路径。另外还有两个依赖,分别是JDBC驱动以及通用Mapper(提供了MBG插件)。     

      

        (3)逆向工程 generatorConfiguration.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>
        <!--
            引入外部属性文件
        -->
        <properties resource="config.properties"/>
    
        <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
            <property name="beginningDelimiter" value="`"/>
            <property name="endingDelimiter" value="`"/>
    
            <!--
                配置通用Mapper的MBG插件相关信息
            -->
            <plugin type="${mapper.plugin}">
                <property name="mappers" value="${mapper.Mapper}"/>
            </plugin>
    
            <jdbcConnection driverClass="${jdbc.driverClass}"
                            connectionURL="${jdbc.url}"
                            userId="${jdbc.user}"
                            password="${jdbc.password}">
            </jdbcConnection>
    
            <!--
                配置Java实体类存放位置
            -->
            <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
    
            <!--
                配置XML映射文件XxxMapper.xml的存放位置
            -->
            <sqlMapGenerator targetPackage="${targetXMLPackage}" targetProject="${targetResourcesProject}"/>
    
            <!--
                配置mapper接口XxxMapper.java存放位置
            -->
            <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}"
                                 type="XMLMAPPER"/>
    
            <!--
                根据数据库表生成Java文件的相关规则
                tableName="%" 表示数据库中所有的表都参与逆向工程,此时使用默认规则
                默认规则:table_depte  类名:TableDept
    
                不符合默认规则时需要使用tableName和 domainObjectName两个属性明确指定
    
                generatedKey:配置主键生成策略
            -->
            <table tableName="tabple_emp" domainObjectName="Employee">
                <generatedKey column="emp_id" sqlStatement="Mysql" identity="true"/>
            </table>
        </context>
    </generatorConfiguration>

         可以看到这个配置文件中的大多数属性都使用${}形式替代了。使用<properties resource="config.properties"/>引入了config.properties属性配置,该文件内容如下:

          config.properties 配置信息

    # 数据库配置
    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/common_mapper
    jdbc.user=root
    jdbc.password=root
    
    #c3p0
    jdbc.maxPoolSize=50
    jdbc.minPoolSize=10
    jdbc.maxStatements=100
    jdbc.testConnection=true
    
    # 通用Mapper配置
    mapper.plugin=tk.mybatis.mapper.generator.MapperPlugin
    mapper.Mapper=tk.mybatis.mapper.common.Mapper

          使用配置文件的目的是因为系统多处地方使用了这种配置,因而使用一个属性文件可以方便的保持一致。

          除了引用配置文件中的属性外,部分还使用了pom.xml中的属性。这种方式使用起来更灵活。

        (4)运行通用Mapper

          在pom.xml这一级目录的命令行窗口执行mvn mybatis-generator:generate即可(前提是配置了mvn)。

        (5)生成的资源

            

             EmployeeMapper 接口:

            

               接口自动继承配置的通用Mapper接口,自动包含泛型实体。

            Employee:

            

            EmployeeMapper.xml:

            

        xml文件只包含了实体的resultMap映射配置。 

      3、逆向工程测试

         @Test
         public void test() throws Exception {
             InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
             SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
             SqlSession sqlSession = sessionFactory.openSession();
    
             //**********************
             //按照Java方式整合通用Mapper的特殊设置
             //1.创建MapperHelper 对象
             MapperHelper mapperHelper = new MapperHelper();
             //2.通过MapperHelper 对象对MyBatis原生的Configuration对象进行处理
             mapperHelper.processConfiguration(sqlSession.getConfiguration());
    
             //**********************
    
             EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
             List<Employee> employees = mapper.selectAll();
             employees.forEach(System.out::println);
             sqlSession.close();
         }

        运行结果:

         可以看到,已经正确的查询到数据了

     

  • 相关阅读:
    第5章 JDBC/ODBC服务器
    第4章 SparkSQL数据源
    第3章 SparkSQL解析
    第2章 执行SparkSQL查询
    第1章 Spark SQL概述
    Ubutun重启网卡
    Java面试通关要点汇总整理
    40道Java基础常见面试题及详细答案
    ListView
    数据库表及字段命名规范
  • 原文地址:https://www.cnblogs.com/niujifei/p/15286271.html
Copyright © 2011-2022 走看看