标签:
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>
|
运行,就可以了!
数据库逆向代码生成工具:MyBatis Generator的使用
标签:
原文地址:http://my.oschina.net/zouqun/blog/410522