(十七)Mybatis-generator代码自动生成用法详解

这篇文章主要讲述Mybatis-generator代码自动生成用法,通过数据库表自动生成mapper文件、dao、实体类等文件,用法非常简单,看一遍保证学会。

目录

    • Mybatis-generator所用文件
    • Mybatis-generator的运行过程
    • 生成代码
      • 1、导入jar包
      • 2、创建generator.xml
      • 3、创建测试类
      • 4、目录结构
      • 5、执行方法
    • 总结

Mybatis-generator所用文件

1、数据库驱动一个
2、mybatis-generator配置文件generatorConfig.xml
3、mybatis-generator的官方jar包

Mybatis-generator的运行过程

连接数据库–》从数据库的表中获取字段–》依据字段生成mapper文件、dao、实体类

生成代码

生成代码方式有好几种,有基于插件的,输入命令的等等,这里给咱们提供的是一种基于maven项目,用java来执行方法生成代码的一种,相对来说比较简单。在实战当中我们也可以直接在项目当中添加以下配置,如果添加需求了,新增表了,就可以直接执行一下方法即可。
创建一个空的maven项目就是可以直接练习的。以下代码直接复制可以练习。

1、导入jar包

<dependency>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-core</artifactId>
   <version>1.4.0</version>
</dependency>

2、创建generator.xml

相对来说能用的到的我都注释了,我们用的时候基本不用动,只需要改包名表名数据库连接方式即可。
官方网址: http://www.mybatis.org/generator/configreference/xmlconfig.html

<?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驱动包路径  -->
  <classPathEntry location="D://maven//repository//mysql//mysql-connector-java//5.1.30//mysql-connector-java-5.1.30.jar" />

<context id="DB2Tables" targetRuntime="MyBatis3">
  
    <!--元素用于定义注释生成器的属性,如果不设置为falsetrue不会添加注释  -->
    <commentGenerator>
        <property name="suppressAllComments" value="true"/>
    </commentGenerator>
      
    <!--连接数据库  -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test"
        userId="root"
        password="root">
    </jdbcConnection>

	<!--forceBigDecimals设置为false的意思是,当数据库当中数字类型有小数点了,java当中设置为BigDecimal -->
    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
    
    <!--bean文件的路径  -->
    <javaModelGenerator targetPackage="com.gzl.cn.bean" targetProject=".\src\main\java">
       <!--假设targetPackage属性设置为“ com.mycompany”,true的话则表的生成对象将放置在包“ com.mycompany.myschema”中,
       false,则生成的对象将放置在“ com.mycompany”架构中。  -->
      <property name="enableSubPackages" value="true" />
      <!--如果您的数据库将数据存储在CHAR字段而不是VARCHAR字段中,那么这将很有用。如果为true,则MyBatis Generator将插入代码以修剪字符字段  -->
      <property name="trimStrings" value="true" />
      <!--是否生成构造器  -->
      <property name="constructorBased" value="true" />
    </javaModelGenerator>
    
    <!--mapper文件的路径  -->
    <sqlMapGenerator targetPackage="com.gzl.cn.mapper"  targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    
    <!--dao文件的路径  -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.gzl.cn.dao"  targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    
    <!--schema:数据库厂商名称,tableName数据库表名,domainObjectName是实体类名 -->
    <table schema="mybatis" tableName="user_t" domainObjectName="User">
    
      <!--是否开启驼峰命名  -->
      <property name="useActualColumnNames" value="false"/>
      
      <!--新增返回主键,一般使用oracle数据库的时候,这个地方需要设置成true,新增之前返回主键  -->
      <generatedKey column="ID" sqlStatement="DB2" identity="true" />
      
      <!--生成的javaBean列名称重命名, column数据库名称,property生成的java属性名称 -->
      <columnOverride column="DATE_FIELD" property="startDate" />
      <columnOverride column="LONG_VARCHAR_FIELD" property="startDate" jdbcType="VARCHAR" />
      
      <!--必填属性列  -->
      <ignoreColumn column="FRED" />
    </table>
	
	<!--有时候数据库表中统一的列都有前缀,而我们java属性当中起名称想把名称去掉这个时候可以使用columnRenamingRule
      	不能columnOverride他一起使用。replaceString替换的意思
      -->
	<!-- <table tableName="sys%">
	    <generatedKey column="id" sqlStatement="Mysql"/>
	    <domainObjectRenamingRule searchString="^sys" replaceString="" />
	</table> -->
  </context>
</generatorConfiguration>

3、创建测试类

这个类就专门用来生成代码使用

package test;

import java.io.File;
import java.io.IOException;
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 GeneratorTest {
	public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
        // TODO Auto-generated method stub
           List<String> warnings = new ArrayList<String>();
           boolean overwrite = true;
           File configFile = new File("src/main/resources/generator.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);
           System.out.println("生成完成");
    }
}

4、目录结构

(十七)Mybatis-generator代码自动生成用法详解_第1张图片

5、执行方法

执行完方法之后,记得右键refresh刷新一下项目,刷新完之后就看到生成的代码了。
(十七)Mybatis-generator代码自动生成用法详解_第2张图片

总结

如果您学会了,麻烦帮小编点个关注或者点个赞,哈哈哈

你可能感兴趣的:(#,MyBatis,java)