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
8.增加分页插件和BaseDao插件
注:如果需要使用,将这两个配置到generatorConfig.xml中即可,可以参考源码中的generatorConfigA.xml文件;BaseDao文件不是自动生成的,需要手动将提供的BaseDao.java文件复制到自己对应的目录 BaseDao.java文件目录:org.mybatis.generator.codegen.mybatis3.javamapper.elements.BaseDao;
废话说了这么多该上示例代码了:
1.实体
2.Dao接口
BaseDao(所有Dao接口都继承该类):
DictDao:
3.XML映射文件
更加详细的生成代码实例,请实际运行生成查看
码云地址:
https://git.oschina.net/ht896632/mybatis-generator-core
码云地址:
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
相关文章推荐
- maven+mybatis+mybatis-generator+sql server 2005自动生成代码,加上自定义分页插件和批量插入更新插件
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过修改源码的方式来实现)
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
- mybatis-generator-core自动生成do、mapping、dao 代码
- mybatis-generator-core-1.3.3自动生成代码的使用
- mybatis-generator-core自动生成do、mapping、dao 代码
- mybatis逆向工程利用mybatis-generator-core自动生成代码
- mybatis-generator 自动生成带中文注释方法(附实体类)
- mybatis-generator-core自动生成do、mapping、dao 代码
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
- 用mybatis generator自动生成代码
- mybatis-generator 代码自动生成工具
- mybatis使用generator自动生成代码时的类型转换
- MyBatis使用Generator自动生成代码
- Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
- 使用Mybatis Generator自动生成Mybatis相关代码
- mybatis generator生成带有分页的Mybatis代码
- 利用mybatis-generator自动生成代码
- MyBatis使用Generator自动生成代码
- 使用Mybatis Generator自动生成Mybatis相关代码