自定义修改mybatis-generator-core,更适合国内开发环境,目前只在mysql下做了测试;
码云地址:
一:主要修改信息如下:
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.实体
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; /** * 主键 * * column:t_dict.id * @return id */ public String getId() { return id; } /** * 主键 * * column:t_dict.id * @param id */ public void setId(String id) { this.id = id; } /** * 字典的Key * * column:t_dict.dkey * @return dkey */ public String getDkey() { return dkey; } /** * 字典的Key * * column:t_dict.dkey * @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对应的实体 * @param 对应查询参数实体 * @param 主键类型 */public interface BaseDao { int countByCriteria(E criteria); int deleteByCriteria(E criteria); int deleteByPrimaryKey(PK id); int insertSelective(T record); List 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{}
3.XML映射文件
and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} id, dkey, dvalue, group_id, dstatus, description, seq delete from t_dict where id = #{id,jdbcType=VARCHAR} delete from t_dict SELECT LAST_INSERT_ID() insert into t_dictdkey, dvalue, group_id, dstatus, description, seq, #{dkey,jdbcType=VARCHAR}, #{dvalue,jdbcType=VARCHAR}, #{groupId,jdbcType=VARCHAR}, #{dstatus,jdbcType=INTEGER}, #{description,jdbcType=CHAR}, #{seq,jdbcType=INTEGER}, update t_dict dkey = #{record.dkey,jdbcType=VARCHAR}, dvalue = #{record.dvalue,jdbcType=VARCHAR}, group_id = #{record.groupId,jdbcType=VARCHAR}, dstatus = #{record.dstatus,jdbcType=INTEGER}, description = #{record.description,jdbcType=CHAR}, seq = #{record.seq,jdbcType=INTEGER}, update t_dict where id = #{id,jdbcType=VARCHAR} dkey = #{dkey,jdbcType=VARCHAR}, dvalue = #{dvalue,jdbcType=VARCHAR}, group_id = #{groupId,jdbcType=VARCHAR}, dstatus = #{dstatus,jdbcType=INTEGER}, description = #{description,jdbcType=CHAR}, seq = #{seq,jdbcType=INTEGER},
更加详细的生成代码实例,请实际运行生成查看
码云地址: