• MyBatis 三剑客


     

    Mybatis三剑客

    在使用mybatis时,以下3个组件也很常用

    • MyBatis-generator   mybatis逆向工程,根据数据表生成实体类、mapper接口、xml映射文件
    • Mybatis-plugin   mapper接口中的方法、xml映射文件中相应的元素、sql语句,快速定位
    • MyBatis-PageHelper   mybatis的分页组件

    MyBatis Generator(MBG)的使用

    MBG可以根据数据表生成对应的model、xml映射文件、mapper接口,只是简单的生成,还需要根据需求修改。

    执行流程:连接数据库->获取表结构->生成文件

    1、新建maven项目

    pom.xml

      <!-- 数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
    
        <!-- mybatis的依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
    
        <!-- mybatis-generator的依赖 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.6</version>
        </dependency>

    2、resources下新建mybatis-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>
        <!--  数据库驱动的jar包 -->
        <!--<classPathEntry location="F:/maven/repository/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar" />-->
    
        <!-- context配置环境 -->
        <context id="myMBG" targetRuntime="MyBatis3">
    
            <!-- xml文件不追加。配置同名文件覆盖时,默认只覆盖mapper接口、实体类,xml映射文件会以追加方式写入 -->
            <!-- 使用此插件后,不管生成多少次,同名xml映射文件都是直接覆盖 -->
            <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"></plugin>
    
            <!--配置生成的注释-->
            <commentGenerator>
                <!-- 去掉方法注释,默认会生成大量的方法说明注释,很不友好  -->
                <property name="suppressAllComments" value="true"/>
                <!-- 去掉注释中的时间戳 -->
                <property name="suppressDate" value="true"/>
            </commentGenerator>
    
            <!-- 数据库连接信息 -->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/db_user?serverTimezone=UTC"
                            userId="chy"
                            password="abcd">
            </jdbcConnection>
    
            <!-- 配置表字段、java之间的类型转换-->
            <javaTypeResolver >
                <!-- 是否将Numeric、Decimal全部转换为BigDecimal类型,设置为false,会根据表字段的长度转换响应的类型,Short  <5,Integer 5~9,Long 10~18,BigDecimal  >18  -->
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- 配置pojo类的生成规则,主要配置实体类存放的包、该包的位置 -->
            <!-- mapper、实体类这些包、文件夹不需要我们手动创建,会自动创建 -->
            <javaModelGenerator targetPackage="com.chy.mall.model" targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
                <!-- 是否去掉String两端的空格,这个可要可不要,缺省时默认为false -->
                <!--<property name="trimStrings" value="true" />-->
            </javaModelGenerator>
    
            <!-- 配置xml映射文件的生成规则 -->
            <sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
            <!-- 配置mapper接口的生成规则 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.chy.mall.dao"  targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
    
            <!-- 配置要使用的数据表,需要配置mapper接口、映射文件名以及实体类名,不然tb_user生成的是TbUserMapper、TbUser -->
            <!-- 默认会生成大量的example相关的东西,不需要,禁用所有的example选项 -->
            <!-- 字段会自动完成映射,比如user_id会自动映射为userId -->
            <!-- 写好一个,Ctrl+D复制到下一行 -->
            <table tableName="tb_user" mapperName="UserMapper" domainObjectName="User" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" />
            <table tableName="tb_permission" mapperName="PermissionMapper" domainObjectName="Permission" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" />
    
        </context>
    </generatorConfiguration>

    主要是修改数据库的连接信息、文件的生成位置、文件名称。这些元素是有顺序的,不能随意更改配置顺序。

    文件名任意,因为后面要指定配置文件的位置

    3、新建主类test.Test

    package test;
    
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.exception.InvalidConfigurationException;
    import org.mybatis.generator.exception.XMLParserException;
    import org.mybatis.generator.internal.DefaultShellCallback;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test {
        
        public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
            List<String> warnings = new ArrayList<String>();
            //生成文件时如果已存在同名文件,会覆盖
            boolean overwrite = true;
            //指定mybatis-generator配置文件的位置
            InputStream configFile = Test.class.getResourceAsStream("/generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        }
    
    }

    4、运行主类,将生成的文件复制到要使用的项目中,根据需要修改。

    也可以直接在原项目中使用

    只能生成简单的代码,复杂的还需要自己写,比如关联查询。


    另一种方式   使用maven插件(推荐)

    1、新建maven项目

        <build>
            <plugins>
    <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.0</version> <configuration> <!-- 覆盖同名文件 --> <overwrite>true</overwrite> </configuration> </plugin>
    </plugins> </build>

    不需要任何依赖

    2、resources下新建配置文件generatorConfig.xml

     <!--  数据库驱动的jar包 -->
     <classPathEntry location="F:/maven/repository/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar" />

    和第一种的基本相同,区别是数据库驱动的jar包添加到classpath中都不行,必须要在配置文件中指定路径

    执行插件时默认加载资源根目录下的generatorConfig.xml

    3、执行maven插件mybatis-generator,生成文件


     这种常用的可以搞成项目模板,以后直接用。

    官网:http://mybatis.org/generator/index.html

    github:https://github.com/mybatis/generator

    带GUI的代码生成器:https://github.com/zouzg/mybatis-generator-gui


    Mybatis-plugin 的使用

    这是IDEA的一个插件,可以实现mapper接口中的方法、xml映射文件中相应的元素|sql语句之间的快速定位

    在插件中搜索 mybatis plugin 安装即可,目前该插件的名称是Free MyBatis plugin,插件名称可能会变化,一般是搜索结果中下载次数最多的那个。


  • 相关阅读:
    SSH学习-struts2整合spring报错'Could not open ServletContext resource [/WEB-INF/applicationContext.xml]'
    YAML学习
    配置composer代理
    Windows下配置PHPUnit(pear已弃用,使用phpunit.phar)
    算法-第四版-练习1.3.9解答
    算法-第四版-练习1.3.10解答
    算法-第四版-练习1.3.11解答
    算法-第四版-练习1.3.12解答
    算法-第四版-练习1.3.13解答
    算法-第四版-练习1.3.14解答
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12227853.html
Copyright © 2020-2023  润新知