前言
现有的方法,有通过 MyBatis 代码生成器进行自动 mapper 生成,此方法劣势很明显,这里不赘述。
还有一种通过 tk.mybatis 的方式,本文的方法思想上借鉴了 tk.mybatis ,但是比 tk.mybatis 更为麻烦,麻烦在于 mapper 要手动写,但是对于 service 层就更为简洁优雅,也可以实现特定的业务。对于大部分通用的业务来说,使用 tk.mybatis 是更快捷的。
开始
BaseMapper.java
package ssm.system.mapper;
import java.io.Serializable;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import ssm.system.entity.PageInfo;
/**
* 通用Mapper
*
* @param <T> 实体
* @param <PK> 主键
*/
public interface BaseMapper<T, PK extends Serializable> {
/**
*
* 查询(根据主键ID查询)
*
**/
T selectByPrimaryKey ( @Param("id") Long id );
/**
*
* 删除(根据主键ID删除)
*
**/
int deleteByPrimaryKey ( @Param("id") Long id );
/**
*
* 添加
*
**/
int insert( T entity );
/**
*
* 添加 (匹配有值的字段)
*
**/
int insertSelective( T entity );
/**
*
* 修改 (匹配有值的字段)
*
**/
int updateByPrimaryKeySelective( T entity );
/**
*
* 修改(根据主键ID修改)
*
**/
int updateByPrimaryKey ( T entity );
/**
* 分页查询
* @param page
* @return
*/
List<T> selectListByCondition( PageInfo page );
int selectCountByCondition( PageInfo page );
}
以用户 User 的 mapper 为例:
UserMapper.java
继承这个 BaseMapper 即可
public interface UserMapper extends BaseMapper<User, Long>{
}
UserMapper.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="ssm.system.mapper.UserMapper">
<!-- 通用查询结果列-->
<sql id="Base_Column_List">
id, loginName, password, realName, roleIds, status, createTime, updateTime, jigou
</sql>
<