Mybatis逆向生成

Mybatis逆向生成


简介

逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过.

使用逆向工程时,需要注意的是表之间的关系无法映射出来.
亦即mybatis的逆向工程生成的都是单表操作.

1:mybatis逆向工程开发文档:
http://www.mybatis.org/genera...




使用逆向工程生成代码有好几种方式,此处就介绍1种最简单的java程序生成.

准备

0.一个在线快速生成的简单springboot项目

1.测试数据库



create database if not exists test00 default character set utf8 collate utf8_general_ci;

use test00;

create table citizen(
    id int(11) not null auto_increment comment '公民ID',
    citizenName varchar(20) not null comment '公民名字',
    PRIMARY KEY (`id`),
    KEY `cid` (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


pom需要的依赖


            io.github.orange1438
            mybatis-generator-core
            1.3.5
        

逆向生成核心配置generatorConfiguration.xml





    
    

    

        
            
            
        

        
        
        

        
        
            
        

        
        
        

        
        
        

        
        
        

        
        
        
Java代码

package cn.example.demo.util;

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

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;

/**
 * 逆向生成
 *
 * @author gzh
 *
 */
public class ReverseGeneratorFunction {
    public static void main(String[] args) throws Exception {
        ArrayList warnings = new ArrayList();
        boolean overwrite = true;
        
        //文件名: generatorConfiguration.xml
        InputStream is = ReverseGeneratorFunction.class.getClassLoader().getResource("generatorConfiguration.xml")
                .openStream();

        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);

        is.close();
        System.out.println("生成代码成功,刷新项目,查看文件");

    }

}

运行main方法,分别生成实体类/映射xml文件/DAO方法,结果如下:


实体类

/* https://github.com/orange1438 */
package cn.example.demo.po;

public class Citizen {
    /** 
     * 公民ID
     */ 
    private Integer id;

    /** 
     * 公民名字
     */ 
    private String citizenname;

    /** 
     * 获取 公民ID citizen.id
     * @return 公民ID
     */
    public Integer getId() {
        return id;
    }

    /** 
     * 设置 公民ID citizen.id
     * @param id 公民ID
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /** 
     * 获取 公民名字 citizen.citizenName
     * @return 公民名字
     */
    public String getCitizenname() {
        return citizenname;
    }

    /** 
     * 设置 公民名字 citizen.citizenName
     * @param citizenname 公民名字
     */
    public void setCitizenname(String citizenname) {
        this.citizenname = citizenname;
    }
}

CitizenMapper.xml





    
        
        
    
    
    
        delete from citizen
        where id = #{id,jdbcType=INTEGER}
    
    
    
        insert into citizen (id, citizenName)
        values (#{id,jdbcType=INTEGER}, #{citizenname,jdbcType=VARCHAR})
    
    
    
        update citizen
        set citizenName = #{citizenname,jdbcType=VARCHAR}
        where id = #{id,jdbcType=INTEGER}
    
    
    
    
    
    


DAO interface

/* https://github.com/orange1438 */
package cn.example.demo.mapper;

import cn.example.demo.po.Citizen;
import java.util.List;

public interface CitizenDAO {
    /** 
     * 根据ID删除
     * @param id 主键ID
     * @return 返回删除成功的数量
     */
    int deleteByPrimaryKey(Integer id);

    /** 
     * 添加对象所有字段
     * @param record 插入字段对象(必须含ID)
     * @return 返回添加成功的数量
     */
    int insert(Citizen record);

    /** 
     * 根据ID查询
     * @param id 主键ID
     * @return 返回查询的结果
     */
    Citizen selectByPrimaryKey(Integer id);

    /** 
     *
     * @return 返回查询的结果
     */
    List selectAll();

    /** 
     * 根据ID修改所有字段(必须含ID)
     * @param record 修改字段对象(必须含ID)
     * @return 返回更新成功的数量
     */
    int updateByPrimaryKey(Citizen record);
}


pom内的 mysql-connector-java 连接依赖版本必须等于,或高于当前MySQL数据库版本,低了会报错,等于是最好的,高了也会报异常,但逆向生成照样成功.

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