您的位置:首页 > 编程语言

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

2017-04-16 22:19 921 查看
自定义修改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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息