您的位置:首页 > 数据库

数据库逆向代码生成工具:MyBatis Generator的使用

2015-05-04 18:07 609 查看
1.前言
今天开发零销量系统,按照我自己的开发习惯,表设计出来了之后就是写dao层mapper了。以前自己学习的时候都是自己一个一个的敲出来。也听过过像hibernate反向工具一样的自动生成dao层的工具,之前没有使用过,今天正好用了一下generator,感觉很好用,可以逆向生成持久层的基本代码节省了大量的时间。而且使用起来很方便,只需要在一个配置文件里面改几个配置信息就可以了。
2.介绍
MyBatis Generator github https://github.com/mybatis/generator
MyBatis Generator的详细介绍http://mybatis.github.io/generator/index.html
MyBatis Generator With Maven http://mybatis.github.io/generator/running/runningWithMaven.html
3.开始使用
1)百度网盘下载:http://pan.baidu.com/s/1bni2JON
2)将文件夹放在桌面(目录自己制定)
3)配置generator.xml,在这个文件中加了注释,需要改动的地方。(我用mac上的文本编辑器写入的引号总是不能识别,采用了将文件复制到idea中,更改完成后在粘贴回原文件)
4)定位到generator文件夹下,执行java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite
注:配置文件中得targetProject的路径必须存在
5)将生成的文件分别拷贝到自己的项目相应的目录中
4.生成的文件
1)domain下得java文件

package com.sankuai.meituan.crm.domain.zerosale;

import java.util.Date;

public class ZeroSaleClueRemark {

private Integer remarkId;

private String remarkTitle;

private Date createTime;

private Integer clueId;

public Integer getRemarkId() {

return remarkId;

}

public void setRemarkId(Integer remarkId) {

this.remarkId = remarkId;

}

public String getRemarkTitle() {

return remarkTitle;

}

public void setRemarkTitle(String remarkTitle) {

this.remarkTitle = remarkTitle == null ? null : remarkTitle.trim();

}

public Date getCreateTime() {

return createTime;

}

public void setCreateTime(Date createTime) {

this.createTime = createTime;

}

public Integer getClueId() {

return clueId;

}

public void setClueId(Integer clueId) {

this.clueId = clueId;

}

}

2)mapper.java

package com.sankuai.meituan.crm.dao.mapper.zerosale;

import com.sankuai.meituan.crm.domain.zerosale.ZeroSaleClueRemark;

public interface ZeroSaleClueRemarkMapper {

int deleteByPrimaryKey(Integer remarkId);

int insert(ZeroSaleClueRemark record);

int insertSelective(ZeroSaleClueRemark record);

ZeroSaleClueRemark selectByPrimaryKey(Integer remarkId);

int updateByPrimaryKeySelective(ZeroSaleClueRemark record);

int updateByPrimaryKey(ZeroSaleClueRemark record);

}

3)mapper.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.sankuai.meituan.crm.dao.mapper.zerosale.ZeroSaleClueRemarkMapper" >

<resultMap id="BaseResultMap" type="com.sankuai.meituan.crm.domain.zerosale.ZeroSaleClueRemark" >

<id column="remark_id" property="remarkId" jdbcType="INTEGER" />

<result column="remark_title" property="remarkTitle" jdbcType="VARCHAR" />

<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />

<result column="clue_id" property="clueId" jdbcType="INTEGER" />

</resultMap>

<sql id="Base_Column_List" >

remark_id, remark_title, create_time, clue_id

</sql>

<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >

select

<include refid="Base_Column_List" />

from zero_sale_clue_remark

where remark_id = #{remarkId,jdbcType=INTEGER}

</select>

<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >

delete from zero_sale_clue_remark

where remark_id = #{remarkId,jdbcType=INTEGER}

</delete>

<insert id="insert" parameterType="com.sankuai.meituan.crm.domain.zerosale.ZeroSaleClueRemark" >

insert into zero_sale_clue_remark (remark_id, remark_title, create_time,

clue_id)

values (#{remarkId,jdbcType=INTEGER}, #{remarkTitle,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},

#{clueId,jdbcType=INTEGER})

</insert>

<insert id="insertSelective" parameterType="com.sankuai.meituan.crm.domain.zerosale.ZeroSaleClueRemark" >

insert into zero_sale_clue_remark

<trim prefix="(" suffix=")" suffixOverrides="," >

<if test="remarkId != null" >

remark_id,

</if>

<if test="remarkTitle != null" >

remark_title,

</if>

<if test="createTime != null" >

create_time,

</if>

<if test="clueId != null" >

clue_id,

</if>

</trim>

<trim prefix="values (" suffix=")" suffixOverrides="," >

<if test="remarkId != null" >

#{remarkId,jdbcType=INTEGER},

</if>

<if test="remarkTitle != null" >

#{remarkTitle,jdbcType=VARCHAR},

</if>

<if test="createTime != null" >

#{createTime,jdbcType=TIMESTAMP},

</if>

<if test="clueId != null" >

#{clueId,jdbcType=INTEGER},

</if>

</trim>

</insert>

<update id="updateByPrimaryKeySelective" parameterType="com.sankuai.meituan.crm.domain.zerosale.ZeroSaleClueRemark" >

update zero_sale_clue_remark

<set >

<if test="remarkTitle != null" >

remark_title = #{remarkTitle,jdbcType=VARCHAR},

</if>

<if test="createTime != null" >

create_time = #{createTime,jdbcType=TIMESTAMP},

</if>

<if test="clueId != null" >

clue_id = #{clueId,jdbcType=INTEGER},

</if>

</set>

where remark_id = #{remarkId,jdbcType=INTEGER}

</update>

<update id="updateByPrimaryKey" parameterType="com.sankuai.meituan.crm.domain.zerosale.ZeroSaleClueRemark" >

update zero_sale_clue_remark

set remark_title = #{remarkTitle,jdbcType=VARCHAR},

create_time = #{createTime,jdbcType=TIMESTAMP},

clue_id = #{clueId,jdbcType=INTEGER}

where remark_id = #{remarkId,jdbcType=INTEGER}

</update>

</mapper>

5.总结
generator只是生成了一些基本的增删改查,就像我们在hibernate中经常用的basedao一样,但是也能减少我们大量的代码编写。后续的业务只需要在它的基础上增加就可以了。
在配置文件中得<table>标签中我们将
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"
都设置成了false,要是设置为true(默认为true)则可以生成一个example,有点类似hibernateTemplate,同样我们也可以使用example中的Critertia,一种面向对象的查询方式,并且根据实体类中字段的属性,生成不同的操作。
当然你也可以根据实际需要直接使用实体类进行增删改查。
当然,这里介绍的时简单的通过命令生成文件的方式,还有一种方式是创建一个maven工程,将配置文件复制到类路径下,在pom.xml中加入

<build>

<finalName>mybatis_generator</finalName>

<plugins>

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactId>

<version>1.3.2</version>

</plugin>

</plugins>

</build>

运行,就可以了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: