mybatis-generator-core自动生成代码,支持生成中文注释、支持分页、提供BaseDao封装...

 

自定义修改mybatis-generator-core,更适合国内开发环境,目前只在mysql下做了测试;

码云地址:

    https://git.oschina.net/ht896632/mybatis-generator-core

一:主要修改信息如下:

   1:将原有实体类生成的英文注释修改为数据库中的中文注释

   2:将原有生成的Dao接口和Mapper.xml文件后面的Mapper更改为Dao;如:UserMapper.java 修改为:UserDao.java;UserMapper.xml修改为UserDao.xml;

   3:生成的配置文件和Dao中去除insert方法和updateById方法,因为insertSelective和updateByPrimaryKeySelective完全可以满足我们的需求

   4:强制生成的所有文件编码为UTF-8

   5.为生成的Dao方法中添加中文注释

   6.将原有Example相关示例类替换为Criteria

   7.增加分页插件,自动生成分页SQL

<plugin type="org.mybatis.generator.plugins.MySqlPaginationPlugin">
            <!--可选属性:起始页记录limitStart,根据自己实际情况可以修改,默认为limitStart->
            <property name="limitStartName" value="limitStart"></property>
            <!--可选属性:结束记录limitSize,根据自己实际情况可以修改,默认为limitSize->
            <property name="limitSizeName" value="limitSize"></property>
</plugin>


  8.增加分页插件和BaseDao插件    

<plugin type="org.mybatis.generator.plugins.MyBaseMapperGeneratorPlugin" >
            <!--必选属性baseDao在你应用中的完全限定名 name:必须是baseDaoPath,value:是你BaseDao          在你项目中的完全限定名-->
            <property name="baseDaoPath" value="com.lht.bp.api.common.BaseDao"></property>
</plugin>


注:如果需要使用,将这两个配置到generatorConfig.xml中即可,可以参考源码中的generatorConfigA.xml文件;BaseDao文件不是自动生成的,需要手动将提供的BaseDao.java文件复制到自己对应的目录 BaseDao.java文件目录:org.mybatis.generator.codegen.mybatis3.javamapper.elements.BaseDao;

废话说了这么多该上示例代码了:

1.实体

package ibatisData;

/**
 * 
 * t_dict
 * 
 * @version 1.0 2017-04-16
 */
public class Dict {
    /**
     * 主键
     * t_dict.id
     */
    private String id;

    /**
     * 字典的Key
     * t_dict.dkey
     */
    private String dkey;


    /**
     * 主键<br>
     *
     * column:t_dict.id<br>
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 主键<br>
     *
     * column:t_dict.id<br>
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 字典的Key<br>
     *
     * column:t_dict.dkey<br>
     * @return dkey
     */
    public String getDkey() {
        return dkey;
    }

    /**
     * 字典的Key<br>
     *
     * column:t_dict.dkey<br>
     * @param dkey
     */
    public void setDkey(String dkey) {
        this.dkey = dkey;
    }

}

 

2.Dao接口

BaseDao(所有Dao接口都继承该类):

package org.mybatis.generator.codegen.mybatis3.javamapper.elements;

import java.io.Serializable;
import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * @author mybatis T表示与table表对应的实体类(Entity) E表示Entity对应的Param类 PK表示可能会用到主键
 *         (比如Integer等)
 * @param <T> 对应的实体
 * @param <E> 对应查询参数实体
 * @param <PK> 主键类型
 */
public interface BaseDao<T, E, PK extends Serializable> {
	int countByCriteria(E criteria);

	int deleteByCriteria(E criteria);

	int deleteByPrimaryKey(PK id);

	int insertSelective(T record);

	List<T> selectByCriteria(E criteria);

	T selectByPrimaryKey(PK id);

	int updateByCriteriaSelective(@Param("record") T record, @Param("param") E criteria);

	int updateByPrimaryKeySelective(T record);

}

DictDao: 

package ibatisData;

import com.lht.bp.api.common.BaseDao;
import ibatisData.Dict;
import ibatisData.DictCriteria;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface DictDao extends BaseDao<Dict, DictCriteria, String> {
}

3.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="ibatisData.DictDao" >
  <resultMap id="BaseResultMap" type="ibatisData.Dict" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <id column="id" property="id" jdbcType="VARCHAR" />
    <result column="dkey" property="dkey" jdbcType="VARCHAR" />
    <result column="dvalue" property="dvalue" jdbcType="VARCHAR" />
    <result column="group_id" property="groupId" jdbcType="VARCHAR" />
    <result column="dstatus" property="dstatus" jdbcType="INTEGER" />
    <result column="description" property="description" jdbcType="CHAR" />
    <result column="seq" property="seq" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Criteria_Where_Clause" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <where >
      <foreach collection="oredCriteria" item="criteria" separator="or" >
        <if test="criteria.valid" >
          <trim prefix="(" suffix=")" prefixOverrides="and" >
            <foreach collection="criteria.criteria" item="criterion" >
              <choose >
                <when test="criterion.noValue" >
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue" >
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue" >
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue" >
                  and ${criterion.condition}
                  <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Update_By_Criteria_Where_Clause" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <where >
      <foreach collection="param.oredCriteria" item="criteria" separator="or" >
        <if test="criteria.valid" >
          <trim prefix="(" suffix=")" prefixOverrides="and" >
            <foreach collection="criteria.criteria" item="criterion" >
              <choose >
                <when test="criterion.noValue" >
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue" >
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue" >
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue" >
                  and ${criterion.condition}
                  <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Base_Column_List" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    id, dkey, dvalue, group_id, dstatus, description, seq
  </sql>
  <select id="selectByCriteria" resultMap="BaseResultMap" parameterType="ibatisData.DictCriteria" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    select
    <if test="distinct" >
      distinct
    </if>
    'true' as QUERYID,
    <include refid="Base_Column_List" />
    from t_dict
    <if test="_parameter != null" >
      <include refid="Criteria_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
    <if test="start != null and end !=null " >
      limit #{start} , #{end}
    </if>
  </select>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    select 
    <include refid="Base_Column_List" />
    from t_dict
    where id = #{id,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    delete from t_dict
    where id = #{id,jdbcType=VARCHAR}
  </delete>
  <delete id="deleteByCriteria" parameterType="ibatisData.DictCriteria" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    delete from t_dict
    <if test="_parameter != null" >
      <include refid="Criteria_Where_Clause" />
    </if>
  </delete>
  <insert id="insertSelective" parameterType="ibatisData.Dict" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <selectKey resultType="java.lang.String" keyProperty="id" order="AFTER" >
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into t_dict
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="dkey != null" >
        dkey,
      </if>
      <if test="dvalue != null" >
        dvalue,
      </if>
      <if test="groupId != null" >
        group_id,
      </if>
      <if test="dstatus != null" >
        dstatus,
      </if>
      <if test="description != null" >
        description,
      </if>
      <if test="seq != null" >
        seq,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="dkey != null" >
        #{dkey,jdbcType=VARCHAR},
      </if>
      <if test="dvalue != null" >
        #{dvalue,jdbcType=VARCHAR},
      </if>
      <if test="groupId != null" >
        #{groupId,jdbcType=VARCHAR},
      </if>
      <if test="dstatus != null" >
        #{dstatus,jdbcType=INTEGER},
      </if>
      <if test="description != null" >
        #{description,jdbcType=CHAR},
      </if>
      <if test="seq != null" >
        #{seq,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <select id="countByCriteria" parameterType="ibatisData.DictCriteria" resultType="java.lang.Integer" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    select count(*) from t_dict
    <if test="_parameter != null" >
      <include refid="Criteria_Where_Clause" />
    </if>
  </select>
  <update id="updateByCriteriaSelective" parameterType="map" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    update t_dict
    <set >
      <if test="record.dkey != null" >
        dkey = #{record.dkey,jdbcType=VARCHAR},
      </if>
      <if test="record.dvalue != null" >
        dvalue = #{record.dvalue,jdbcType=VARCHAR},
      </if>
      <if test="record.groupId != null" >
        group_id = #{record.groupId,jdbcType=VARCHAR},
      </if>
      <if test="record.dstatus != null" >
        dstatus = #{record.dstatus,jdbcType=INTEGER},
      </if>
      <if test="record.description != null" >
        description = #{record.description,jdbcType=CHAR},
      </if>
      <if test="record.seq != null" >
        seq = #{record.seq,jdbcType=INTEGER},
      </if>
    </set>
    <if test="_parameter != null" >
      <include refid="Update_By_Criteria_Where_Clause" />
    </if>
  </update>
  <update id="updateByPrimaryKeySelective" parameterType="ibatisData.Dict" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    update t_dict
    <set >
      <if test="dkey != null" >
        dkey = #{dkey,jdbcType=VARCHAR},
      </if>
      <if test="dvalue != null" >
        dvalue = #{dvalue,jdbcType=VARCHAR},
      </if>
      <if test="groupId != null" >
        group_id = #{groupId,jdbcType=VARCHAR},
      </if>
      <if test="dstatus != null" >
        dstatus = #{dstatus,jdbcType=INTEGER},
      </if>
      <if test="description != null" >
        description = #{description,jdbcType=CHAR},
      </if>
      <if test="seq != null" >
        seq = #{seq,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=VARCHAR}
  </update>
</mapper>

更加详细的生成代码实例,请实际运行生成查看

码云地址:

https://git.oschina.net/ht896632/mybatis-generator-core

转载于:https://my.oschina.net/ht896632/blog/880485

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值