MyBatis(1)之MyBatis-Generator起步

2019-05-29  本文已影响0人  HolloWord

独立的jar工程
xml标签解析
main函数配置
xml示列

一.创建Jar项目

建议创建独立的jar项目,只需要使用maven创建空骨架项目,原因:

  1. 该部分不参与任何的主业务,也引用不到主业务想关的内容;
  2. 该部分的依赖相对独立,与主项目基本没有交集;

添加依赖:

<dependency>
     <groupId>org.mybatis.generator</groupId>
     <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.0</version>
</dependency>
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.46</version>
</dependency>

二.xml配置

在resources目录下创建(xxx).xml文件,如:mybatis-generator.xml。如何生成Interface、xml、model全部在该xml文件中配置。
1.最新的DTD:

<!DOCTYPE generatorConfiguration  
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

2.标签配置以及意义

<context/>的子标签

****以上标签是有顺序的,按照上面的顺序即可;否则启动会报错****
以上就是经常用到并且很重要的标签,以及属性;熟能生巧,可以多尝试配置一下,找到适合自己项目的配置;

main函数

main函数主要是从classPath中加载上面配置的XML文件;并打印一些日志;具体的代码如下:

public static void main(String[] args) {
        List<String> warnings = new ArrayList<String>();
        try {
            //重新生成时 代码是否被覆盖
            boolean overwrite = true;
            //加载MyBatis的xml配置文件
            File file = new File(StartExecute.class.getClassLoader().getResource("common/generator.xml").getFile());

            ConfigurationParser parser = new ConfigurationParser(warnings);
            Configuration configuration = parser.parseConfiguration(file);

            DefaultShellCallback defaultShellCallback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(configuration, defaultShellCallback, warnings);
            myBatisGenerator.generate(null);

        } catch (IOException | SQLException | InterruptedException | InvalidConfigurationException | XMLParserException e) {
            LOGGER.info("出现的异常信息是{"+e.getMessage()+"}");
        }

        warnings.forEach(item ->System.out.println());
        System.out.println("生成完毕");
    }

最后附上我自己的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="mybatis3" targetRuntime="MyBatis3" defaultModelType="flat" introspectedColumnImpl="">
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>

        <commentGenerator type="com.rwx.mybatis.component.config.CustomerCommentGenerator">
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>

        <jdbcConnection
                driverClass="${driver}"
                connectionURL="${url}"
                userId="${username}"
                password="${password}"/>

        <!--存放model的配置-->
        <javaModelGenerator targetPackage="com.test.mybatis.generator.model"
                            targetProject="E:\Project\mybatisgenertor\src\main\java">
            <property name="constructorBased" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--存放xml的配置-->
        <sqlMapGenerator targetPackage="com.test.mybatis.generator.dao.mapper"
                         targetProject="E:\Project\mybatisgenertor\src\main\java">
            <property name="enableSubPackage" value="true"/>
        </sqlMapGenerator>

        <!--存放interface的配置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.test.mybatis.generator.dao"
                             targetProject="E:\Project\mybatisgenertor\src\main\java"/>

        <table tableName="test" domainObjectName="Test">
        <generatedKey column="id" sqlStatement="SELECT(REPLACE(UUID(),'-',''))" type="pre"/>
        <columnOverride column="id" property="id"/>
        <columnOverride column="contract_code" property="contractCode"/>
        <columnOverride column="money" property="money"/>
        <columnOverride column="payment_type" property="paymentType" javaType="Integer"/>
        <columnOverride column="total_periods" property="totalPeriods"/>
        <columnOverride column="delete_flag" property="deleteFlag" javaType="Integer"/>
        </table>
    </context>
</generatorConfiguration>
上一篇 下一篇

猜你喜欢

热点阅读