码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-05-04 20:30:52      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!