mysql-connector 逆向生成_Mybatis逆向生成

Mybatis逆向生成

简介

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

使用逆向工程时,需要注意的是表之间的关系无法映射出来.

亦即mybatis的逆向工程生成的都是单表操作.

使用逆向工程生成代码有好几种方式,此处就介绍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

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

defaultModelType="flat">

connectionURL="jdbc:mysql://localhost/test00" userId="root"

password="root">

targetPackage="cn.example.demo.po" targetProject="src/main/java">

targetProject="src/main/resources">

targetPackage="cn.example.demo.mapper" targetProject="src/main/java">

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

type="cn.example.demo.po.Citizen">

property="citizenname" />

parameterType="java.lang.Integer">

delete from citizen

where id = #{id,jdbcType=INTEGER}

insert into citizen (id, citizenName)

values (#{id,jdbcType=INTEGER}, #{citizenname,jdbcType=VARCHAR})

parameterType="cn.example.demo.po.Citizen">

update citizen

set citizenName = #{citizenname,jdbcType=VARCHAR}

where id = #{id,jdbcType=INTEGER}

parameterType="java.lang.Integer" resultMap="BaseResultMap">

select id, citizenName

from citizen

where id = #{id,jdbcType=INTEGER}

select id, citizenName

from citizen

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数据库版本,低了会报错,等于是最好的,高了也会报异常,但逆向生成照样成功.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值