自定义修改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
注:如果需要使用,将这两个配置到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
select
distinct
'true' as QUERYID,
from t_dict
order by ${orderByClause}
limit #{start} , #{end}
select
from t_dict
where id = #{id,jdbcType=VARCHAR}
delete from t_dict
where id = #{id,jdbcType=VARCHAR}
delete from t_dict
SELECT LAST_INSERT_ID()
insert into t_dict
dkey,
dvalue,
group_id,
dstatus,
description,
seq,
#{dkey,jdbcType=VARCHAR},
#{dvalue,jdbcType=VARCHAR},
#{groupId,jdbcType=VARCHAR},
#{dstatus,jdbcType=INTEGER},
#{description,jdbcType=CHAR},
#{seq,jdbcType=INTEGER},
select count(*) from t_dict
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
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},
where id = #{id,jdbcType=VARCHAR}
更加详细的生成代码实例,请实际运行生成查看
码云地址: