Mybatis学习(一):MyBatis代码生成器

使用mybatis代码生成器,须先在数据库中创建相应的表。

一、导入依赖

pom.xml中加入如下依赖:

<!--mybatis生成器-->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.3</version>
    </dependency>
  </dependencies>

二、配置文件

在项目的src/main/resources中创建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>
    <!--defaultModelType:使一个表只生成一个实体类-->
    <!--因为使用的mysql,所以前后分隔符都设置为 ` -->
    <context id="MySqlContext"
             targetRuntime="MyBatis3Simple"
             defaultModelType="flat">
        <property name="beginingDelimiter" value="`"/>
        <property name="endingDemiliter" value="`"/>

        <!--注释生成器:配置了禁止在注释中生成日期-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <!--连接的数据源信息-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!--配置生成的包名-->
        <javaModelGenerator targetPackage="test.model" targetProject="src/main/java">
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--配置生成Mapper.xml文件的位置-->
        <sqlMapGenerator targetPackage="test.xml"
                         targetProject="src\main\resources"/>
        <!--配置生成mapper接口得位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src\main\java"/>

        <!--%匹配数据库中所有的表-->
        <table tableName="%">
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
    </context>
</generatorConfiguration>

三、运行方式

1.使用java编写代码运行

在项目groupId对应的目录下创建generator包,并在包中创建generator.java类,代码如下:

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by 12450 on 2019/4/1.
 */
public class Generator {
    public static void main(String[] args) throws Exception{
        //MBG执行过程中得警告信息
        List<String> warnings = new ArrayList<>();
        //当生成得代码重复时,覆盖原代码
        boolean overwrite = true;
        //读取MBG配置文件
        InputStream is = Generator.class.getResourceAsStream("/generator/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        is.close();

        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        //创建MBG
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback,warnings);
        //执行生成代码
        myBatisGenerator.generate(null);
        //输出警告信息
        for (String warning: warnings) {
            System.out.println(warning);
        }
    }
}

运行即可生成。

四、配置文件参数解析

<generatorConfiguration></generatorConfiguration>中有三个子级标签

1.properties(最多一个):用于指定一个需要在配置中解析使用的外部属性文件,引入属性文件后,可以再配置中使用${property}这种形式的引用。包含resource和url两个属性。不可同时出现。

  • resource:指定classpath下的属性文件。

  • url:指定文件系统上的特定位置。

2.classPathEntry(可以配置多个):classPathEntry标签最常见的用法是通过属性location指定驱动的路径。

3.context:只有一个必选属性id,用来唯一确定该标签。该id属性可以再运行MBG时使用。以下是几个可选属性:

defaultModeType:定义了MBG如何生成实体类。

  •  conditional:默认值,和下边的hierarchical类似,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类。而是会将该字段合并到基本实体类中。
  • flat:该只为每张表生成一个实体类。
  • hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表有BLOB字段,则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他字段另外生成一个单独的实体类。MBG会在所有生成的实体类之间维护一个继承关系。

targetRuntime:指定生成代码的运行时环境。

  • MyBatis3:默认值
  • MyBatis3Simple:这种情况不会生成与Example相关的方法。

猜你喜欢

转载自blog.csdn.net/StringBuff/article/details/88970640