这篇博客我们介绍一下关于Mybatis-Plus相关的知识,Mybatis-Plus可以简单的理解为Mybatis的加强,其在Mybatis的基础上完成了一些封装,这样开发人员在使用起来就很容易和方便(确实是一个很好的框架),官网Mybatis-Plus
在使用Mybatis-Plus中我们可能用到一个比较多的类是BaseMapper接口,其最终也是利用的Mybatis接口编程的实现机制,其默认提供了一系列的增删改查的基础方法,并且开发人员对于这些基础操作不需要写SQL进行处理操作(Mybatis提供的机制就是需要开发人员在mapper.xml中提供sql语句),那样我们可以猜测肯定是Mybatis-Plus完成了BaseMapper接口提供的方法的SQL语句的生成操作。
BaseMapper类:
-
public
interface BaseMapper<T> {
-
-
/**
-
*
-
* 插入一条记录
-
*
-
*
-
* @param entity 实体对象
-
*/
-
Integer insert(T entity);
-
-
/**
-
*
-
* 根据 ID 删除
-
*
-
*
-
* @param id 主键ID
-
*/
-
Integer deleteById(Serializable id);
-
-
/**
-
*
-
* 根据 columnMap 条件,删除记录
-
*
-
*
-
* @param columnMap 表字段 map 对象
-
*/
-
Integer deleteByMap(@Param(Constants.COLUMN_MAP) Map
columnMap) ;
-
-
/**
-
*
-
* 根据 entity 条件,删除记录
-
*
-
*
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
-
*/
-
Integer delete(@Param(Constants.WRAPPER) Wrapper
queryWrapper) ;
-
-
/**
-
*
-
* 删除(根据ID 批量删除)
-
*
-
*
-
* @param idList 主键ID列表(不能为 null 以及 empty)
-
*/
-
Integer deleteBatchIds(@Param(Constants.COLLECTION) Collection extends Serializable> idList);
-
-
/**
-
*
-
* 根据 ID 修改
-
*
-
*
-
* @param entity 实体对象
-
*/
-
Integer updateById(@Param(Constants.ENTITY) T entity);
-
-
/**
-
*
-
* 根据 whereEntity 条件,更新记录
-
*
-
*
-
* @param entity 实体对象 (set 条件值,不能为 null)
-
* @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
-
*/
-
Integer update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper
updateWrapper) ;
-
-
/**
-
*
-
* 根据 ID 查询
-
*
-
*
-
* @param id 主键ID
-
*/
-
T selectById(Serializable id);
-
-
/**
-
*
-
* 查询(根据ID 批量查询)
-
*
-
*
-
* @param idList 主键ID列表(不能为 null 以及 empty)
-
*/
-
List
selectBatchIds(@Param(Constants.COLLECTION) Collection extends Serializable> idList) ;
-
-
/**
-
*
-
* 查询(根据 columnMap 条件)
-
*
-
*
-
* @param columnMap 表字段 map 对象
-
*/
-
List
selectByMap(@Param(Constants.COLUMN_MAP) Map columnMap) ;
-
-
/**
-
*
-
* 根据 entity 条件,查询一条记录
-
*
-
*
-
* @param queryWrapper 实体对象
-
*/
-
T selectOne(@Param(Constants.WRAPPER) Wrapper
queryWrapper) ;
-
-
/**
-
*
-
* 根据 Wrapper 条件,查询总记录数
-
*
-
*
-
* @param queryWrapper 实体对象
-
*/
-
Integer selectCount(@Param(Constants.WRAPPER) Wrapper
queryWrapper) ;
-
-
/**
-
*
-
* 根据 entity 条件,查询全部记录
-
*
-
*
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
-
*/
-
List
selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper) ;
-
-
/**
-
*
-
* 根据 Wrapper 条件,查询全部记录
-
*
-
*
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
-
*/
-
List
-
-
/**
-
*
-
* 根据 Wrapper 条件,查询全部记录
-
* 注意: 只返回第一个字段的值
-
*
-
*
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
-
*/
-
List;
-
-
/**
-
*
-
* 根据 entity 条件,查询全部记录(并翻页)
-
*
-
*
-
* @param page 分页查询条件(可以为 RowBounds.DEFAULT)
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
-
*/
-
IPage
selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper) ;
-
-
/**
-
*
-
* 根据 Wrapper 条件,查询全部记录(并翻页)
-
*
-
*
-
* @param page 分页查询条件
-
* @param queryWrapper 实体对象封装操作类
-
*/
-
IPage
-
}
在Mybatis-Plus中提供了SqlMethod类,从这个类中我们可以看到针对BaseMapper类中的每个方法,SqlMethod都提供了一个SQL语句的模板来生成SQL语句,最终还是一个namespace+method对应一条sql语句
-
public
enum SqlMethod {
/**
-
* 插入
-
*/
-
INSERT_ONE(
"insert",
"插入一条数据(选择字段插入)",
""),
-
-
/**
-
* 删除
-
*/
-
DELETE_BY_ID(
"deleteById",
"根据ID 删除一条数据",
""),
-
DELETE_BY_MAP(
"deleteByMap",
"根据columnMap 条件删除记录",
""),
-
DELETE(
"delete",
"根据 entity 条件删除记录",
""),
-
DELETE_BATCH_BY_IDS(
"deleteBatchIds",
"根据ID集合,批量删除数据",
""),
-
-
/**
-
* 逻辑删除
-
*/
-
LOGIC_DELETE_BY_ID(
"deleteById",
"根据ID 逻辑删除一条数据",
""),
-
LOGIC_DELETE_BY_MAP(
"deleteByMap",
"根据columnMap 条件逻辑删除记录",
""),
-
LOGIC_DELETE(
"delete",
"根据 entity 条件逻辑删除记录",
""),
-
LOGIC_DELETE_BATCH_BY_IDS(
"deleteBatchIds",
"根据ID集合,批量逻辑删除数据",
""),
-
-
/**
-
* 修改
-
*/
-
UPDATE_BY_ID(
"updateById",
"根据ID 选择修改数据",
""),
-
UPDATE(
"update",
"根据 whereEntity 条件,更新记录",
""),
-
-
/**
-
* 逻辑删除 -> 修改
-
*/
-
LOGIC_UPDATE_BY_ID(
"updateById",
"根据ID 修改数据",
""),
-
LOGIC_UPDATE_ALL_COLUMN_BY_ID(
"updateAllColumnById",
"根据ID 选择修改数据",
""),
-
-
-
/**
-
* 查询
-
*/
-
SELECT_BY_ID(
"selectById",
"根据ID 查询一条数据",
"SELECT %s FROM %s WHERE %s=#{%s}"),
-
SELECT_BY_MAP(
"selectByMap",
"根据columnMap 查询一条数据",
""),
-
SELECT_BATCH_BY_IDS(
"selectBatchIds",
"根据ID集合,批量查询数据",
""),
-
SELECT_ONE(
"selectOne",
"查询满足条件一条数据",
""),
-
SELECT_COUNT(
"selectCount",
"查询满足条件总记录数",
""),
-
SELECT_LIST(
"selectList",
"查询满足条件所有数据",
""),
-
SELECT_PAGE(
"selectPage",
"查询满足条件所有数据(并翻页)",
""),
-
SELECT_MAPS(
"selectMaps",
"查询满足条件所有数据",
""),
-
SELECT_MAPS_PAGE(
"selectMapsPage",
"查询满足条件所有数据(并翻页)",
""),
-
SELECT_OBJS(
"selectObjs",
"查询满足条件所有数据",
""),
-
-
/**
-
* 逻辑删除 -> 查询
-
*/
-
LOGIC_SELECT_BY_ID(
"selectById",
"根据ID 查询一条数据",
"SELECT %s FROM %s WHERE %s=#{%s} %s"),
-
LOGIC_SELECT_BATCH_BY_IDS(
"selectBatchIds",
"根据ID集合,批量查询数据",
"");
-
-
private
final String method;
-
private
final String desc;
-
private
final String sql;
-
-
SqlMethod(String method, String desc, String sql) {
-
this.method = method;
-
this.desc = desc;
-
this.sql = sql;
-
}
-
-
public String getMethod() {
-
return method;
-
}
-
-
public String getDesc() {
-
return desc;
-
}
-
-
public String getSql() {
-
return sql;
-
}
-
-
}
转载自:https://blog.csdn.net/qq924862077/article/details/81774958