• MyBatis3-代码生成工具的使用


    以下内容引用自http://www.yihaomen.com/article/java/331.htm

    MyBatis应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量,所以MyBatis官方也推出了一个MyBatis代码生成工具的JAR包。按照MyBatis Generator的doc文档参考,初步配置出了一个可以使用的版本,主要有一下功能:

    1、生成POJOs与数据库结构对应

    2、如果有主键,能匹配主键

    3、如果没有主键,可以用其他字段去匹配

    4、动态select、update、delete方法

    5、自动生成接口(也就是以前的dao层)

    6、自动生成SQL Mapper,增删改查各种语句配置,包括动态where语句配置

    下面介绍下详细过程:

    1、创建测试工程,并配置MyBatis代码生成jar包

            <!-- mysql-connector-java -->
            <!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
                <scope>system</scope>
                <systemPath>${project.build.outputDirectory}/lib/mysql-connector-java-5.1.38.jar</systemPath>
            </dependency>
    
            <!-- mybatis generator -->
            <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.5</version>
            </dependency>

    2、在数据库中创建测试表 

    在Test数据库中创建用来测试的category表

    Drop TABLE IF EXISTS `category`;
    Create TABLE `category` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `catname` varchar(50) NOT NULL,
      `catdescription` varchar(200) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    3、配置MyBatis代码生成工具的配置文件  

    在创建的工程中,创建相应的package比如:

    com.jsoft.testmybatis.inter用来存放MyBatis接口对象。

    com.jsoft.testmybatis.mapper用来存放SQL Mapper对应的映射,SQL语句等。

    com.jsoft.testmybatis.model用来存放与数据库对应的Model 。

    在用MyBatis代码生成工具之前,这些目录必须先创建好,作为一个好的应用程序,这些目录的创建也是有规律的。

    根据MyBatis代码生成工具文档,需要一个配置文件,这里命名为:mbgConfiguration.xml放在resources目录下,配置文件内容如下:

    <?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>
    
        <!--配置mysql驱动jar包路径,这里问了方便直接采用相对路径引入JAR包,并且对应POM也设置成项目的目录-->
        <classPathEntry location="target/classes/lib/mysql-connector-java-5.1.38.jar" />
    
        <context id="jsoft_mysql_tables" targetRuntime="MyBatis3">
    
            <!--为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制-->
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
                <property name="suppressDate" value="true" />
            </commentGenerator>
            <!--注释控制完毕-->
    
            <!--数据库连接-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/Test?serverTimezone=UTC" userId="root" password="root">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!--数据表对应的model层-->
            <javaModelGenerator targetPackage="com.jsoft.testmybatis.model" targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
    
            <!--SQL Mapper隐射配置文件-->
            <sqlMapGenerator targetPackage="com.jsoft.testmybatis.mapper" targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
            <!--在ibatis2中是dao层,但在mybatis3中,其实就是mapper接口-->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.jsoft.testmybatis.inter" targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
    
            <!--要对那些数据表进行生成操作,必须要有一个-->
            <table schema="mybatis" tableName="category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
            </table>
    
        </context>
    </generatorConfiguration>

    提示:更多的详细配置参考官方文档:http://www.mybatis.org/generator/index.html

    4、用一个main方法来测试能否用MyBatis成生成刚刚创建的category表对应的Model,SQL Mapper等内容。

    创建一个com.jsoft.testmybatis.test1的package,并在此package下面建立一个测试的类GenMain:

    package com.jsoft.testmybatis.test1;
    
    import java.io.File;
    import java.io.IOException;
    import java.net.URISyntaxException;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    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;
    
    public class GenMain {
        public static void main(String[] args) {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            String genCfg = "/mbgConfiguration.xml";
            File configFile = null;
            try {
                configFile = new File(GenMain.class.getResource(genCfg).toURI().getPath());
            } catch (URISyntaxException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = null;
            try {
                config = cp.parseConfiguration(configFile);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XMLParserException e) {
                e.printStackTrace();
            }
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = null;
            try {
                myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            } catch (InvalidConfigurationException e) {
                e.printStackTrace();
            }
            try {
                myBatisGenerator.generate(null);
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    5、运行测试的main方法,生成MyBatis相关代码

    运行GenMain类里的main方法,并刷新工程,会发现各自package目录下已经相应生成了对应的文件,完全符合MyBatis规则,效果图如下:

    6、注意事项

    如果想生成example之类的东西,需要在<table></table>里面去掉

    enableCountByExample="false" enableUpdateByExample="false"
    enableDeleteByExample="false" enableSelectByExample="false"
    selectByExampleQueryId="false"

    这部分配置,这是生成Example而用的,一般来说对项目没有用。

    另外生成的SQL Mapper等,只是对单表的增删改查,如果有多表join操作,就可以手动配置,如果调用存储过程,也需要手工配置。这时工作量已经少很多了。

    如果想用命令行方式处理,也是可以的。

    比如:
    java -jar mybatis-generator-core-1.3.2.jar -mbgConfiguration.xm -overwrite

    这时,要用绝对路径才行。另外mbgConfiguration.xml配置文件中targetProject的配置也必须是绝对路径。

    测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test9

    参考:

    http://www.yihaomen.com/article/java/331.htm

    并附带上面参考中的两个生成工具,支持MySQL,Oracle:

    链接:http://pan.baidu.com/s/1qX8Indq 密码:kuja

  • 相关阅读:
    php函数去除html标签
    php 逐行读取txt文件
    php获取客户端与服务器端IP
    windows+php环境下安装memcache
    个人构思(android旅游广告发展方向,快乐的工作团队项目)
    一个短信和联系人的小软件
    下载器简单实例
    文件选择器
    ubuntu11.04的java环境配置
    音乐播放器
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7060551.html
Copyright © 2020-2023  润新知