mybatis逆向工程

什么是逆向工程?

就是我们可以根据数据库表,自动生成javabean,mapper接口和其对应的maaper.xml文件。

现有数据库ssm_curd以及相应的表tbl_emp和tbl_dept:

项目的基本目录如下:

 主要的是配置文件,我们看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>

    context id="testTables" targetRuntime="MyBatis3">
        commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            property name="suppressAllComments" value="true" />
        </数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/ssm_curd" userId="root"
            password="123456"jdbcConnection <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
            userId="yycg"
            password="yycg">
        </jdbcConnection> -->

         默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
            NUMERIC 类型解析为java.math.BigDecimal javaTypeResolver="forceBigDecimals"="false" >

         targetProject:生成PO类的位置 javaModelGenerator targetPackage="com.gong.generate.bean"
            targetProject=".\src" enableSubPackages:是否让schema作为包的后缀 ="enableSubPackages"/>
             从数据库返回的值被清理前后的空格 ="trimStrings"javaModelGenerator targetProject:mapper映射文件生成的位置 sqlMapGenerator ="mapper"=".\conf"sqlMapGenerator targetPackage:mapper接口生成的位置 javaClientGenerator type="XMLMAPPER"
            targetPackage="com.gong.generate.dao" 
            targetProjectjavaClientGenerator 指定数据库表 table tableName="tbl_emp" domainObjectName="Employee" 
        enableCountByExample="false" enableUpdateByExample 
        enableDeleteByExample enableSelectByExample 
        selectByExampleQueryId="false"></table="tbl_dept"="Department">
        
    context>
>

我们慢慢来看:

>

id为该配置文件里的标识,targetRuntime为MyBatis3。

        >

去掉生成文件中的注释。

        >

数据库连接配置

        >

配置POJO:javaModelGenerator ,具体位置:targetProject,具体包:targetPackage

        >

配置mapper.xml

        >

配置mapper.java也就是接口。

        >

指定数据库名称以及要生成的POJO的名称。后面的一些属性是为了不生成类似于EmployeeExample.java等example文件。

接下来是运行的java文件:GeneratorSqlmap.java

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

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

public class GeneratorSqlmap {

    void generator() throws Exception{

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指定 逆向工程配置文件
        File configFile = new File("generatorConfig.xml"); 
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback =  DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator =  MyBatisGenerator(config,callback,warnings);
        myBatisGenerator.generate(null);

    } 
    static void main(String[] args)  Exception {
        try {
            GeneratorSqlmap generatorSqlmap =  GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

}

我们只需要更改为自己配置文件的位置即可,运行它:控制台

 点击自己的项目,按F5进行刷新:

 

我们发现生成了相关的文件,我们看下其中的一些:

Employee.java

package com.gong.generate.bean;

 Employee {
    private Integer empId;

     String empName;

     String gender;

     String email;

     Integer dId;

    public Integer getEmpId() {
        return empId;
    }

    void setEmpId(Integer empId) {
        this.empId = String getEmpName() {
         empName;
    }

     setEmpName(String empName) {
        this.empName = empName == null ?  : empName.trim();
    }

     String getGender() {
         gender;
    }

     setGender(String gender) {
        this.gender = gender ==  : gender.trim();
    }

     String getEmail() {
         email;
    }

     setEmail(String email) {
        this.email = email ==  : email.trim();
    }

     Integer getdId() {
         dId;
    }

     setdId(Integer dId) {
        this.dId = dId;
    }
}

发现数据库中的下划线命名字段会转换成java中驼峰命名的属性。

EmployeeMapper.java

 com.gong.generate.dao;

 com.gong.generate.bean.Employee;

interface EmployeeMapper {
    int deleteByPrimaryKey(Integer empId);

     insert(Employee record);

     insertSelective(Employee record);

    Employee selectByPrimaryKey(Integer empId);

     updateByPrimaryKeySelective(Employee record);

     updateByPrimaryKey(Employee record);
}

提供了一些默认的方法。

EmployeeMapper.xml

xml version="1.0" encoding="UTF-8" DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" mapper namespace="com.gong.generate.dao.EmployeeMapper" >
  resultMap ="BaseResultMap" type="com.gong.generate.bean.Employee" >
    id column="emp_id" property="empId" jdbcType="INTEGER" />
    result ="emp_name"="empName"="VARCHAR" ="gender"="CHAR" ="email"="d_id"="dId"/>
  resultMapsql ="Base_Column_List" >
    emp_id,emp_name,gender,email,d_id
  sqlselect ="selectByPrimaryKey" resultMap parameterType="java.lang.Integer" 
    select 
    include refid/>
    from tbl_emp
    where emp_id = #{empId,jdbcType=INTEGER}
  selectdelete ="deleteByPrimaryKey"
    delete from tbl_emp
    where emp_id = #{empId,1)">deleteinsert ="insert"
    insert into tbl_emp (emp_id,d_id)
    values (#{empId,jdbcType=INTEGER},#{empName,jdbcType=VARCHAR},#{gender,jdbcType=CHAR},#{email,#{dId,jdbcType=INTEGER})
  insert="insertSelective"
    insert into tbl_emp
    trim prefix="(" suffix=")" suffixOverrides="," >
      if test="empId != null" 
        emp_id,if="empName != null" 
        emp_name,1)">="gender != null" 
        gender,1)">="email != null" 
        email,1)">="dId != null" 
        d_id,1)">trim="values ("
        #{empId,1)">
        #{empName,1)">
        #{gender,1)">
        #{email,1)">
        #{dId,1)">update ="updateByPrimaryKeySelective"
    update tbl_emp
    set 
        emp_name = #{empName,1)">
        gender = #{gender,1)">
        email = #{email,1)">
        d_id = #{dId,1)">set
    where emp_id = #{empId,1)">update="updateByPrimaryKey"
    update tbl_emp
    set emp_name = #{empName,gender = #{gender,email = #{email,d_id = #{dId,jdbcType=INTEGER}
    where emp_id = #{empId,1)">mapper>

对应的mapper.xml文件,至此mybatis逆向工程就完成了。

相关文章

1.pom.xml引入依赖 &lt;dependency&gt; &lt;gro...
&lt;?xml version=&quot;1.0&quot; encoding=&a...
准备工作 ① 创建数据库&amp;数据表 ## 创建数据库 CREA...
MyBatis逆向工程是指根据数据库表结构自动生成对应的实体类、...
MyBatis获取参数值的两种方式:${}和#{} ${}的本质就是字符串...
resultMap作用是处理数据表中字段与java实体类中属性的映射关...