* 插入一条记录(选择字段,策略插入) *
* * @param entity 实体对象 */ boolean save(T entity); ``` 修改: ```java /** ** 根据 ID 选择修改 *
* * @param entity 实体对象 */ boolean updateById(T entity); /** ** 根据 whereEntity 条件,更新记录 *
* * @param entity 实体对象 * @param updateWrapper 实体对象封装操作类 * {@link com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper} */ boolean update(T entity, Wrapper* 根据 ID 删除 *
* * @param id 主键ID */ boolean removeById(Serializable id); /** ** 根据 entity 条件,删除记录 *
* * @param queryWrapper 实体包装类 * {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ boolean remove(Wrapper* 插入一条记录 *
* * @param entity 实体对象 */ int insert(T entity); ``` 修改: ```java /** ** 根据 whereEntity 条件,更新记录 *
* * @param entity 实体对象 (set 条件值,不能为 null) * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句) */ int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper* 根据 ID 修改 *
* * @param entity 实体对象 */ int updateById(@Param(Constants.ENTITY) T entity); ``` 删除: ```java /** ** 根据 entity 条件,删除记录 *
* * @param queryWrapper 实体对象封装操作类(可以为 null) */ int delete(@Param(Constants.WRAPPER) Wrapper* 根据 ID 删除 *
* * @param id 主键ID */ int deleteById(Serializable id); ``` 以上相当于是常用API了,我们去看看,他是怎么实现的。毫无疑问,Mapper是底层,Service调用Mapper去执行sql,完成相关操作,所以,你完全可以直接调用Mapper完成相关操作,就跟使用MyBatis一样。下面我们去看看,他帮我们写的Service是什么样子,这里只看一个修改操作吧。 接口: ```java /** ** 根据 whereEntity 条件,更新记录 *
* * @param entity 实体对象 * @param updateWrapper 实体对象封装操作类 * {@link com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper} */ boolean update(T entity, Wrapper* 判断数据库操作是否成功 *
** 注意!! 该方法为 Integer 判断,不可传入 int 基本类型 *
* * @param result 数据库操作返回影响条数 * @return boolean */ protected static boolean retBool(Integer result) { return SqlHelper.retBool(result); } /** ** 判断数据库操作是否成功 *
* * @param result 数据库操作返回影响条数 * @return boolean */ public static boolean retBool(Integer result) { return null != result && result >= 1; } ``` 哈哈,是不是我们自己也会这样写啊! ## 查询 接下来,我们一起讨论下查询吧。 MP 3.x,查询接口发生了很大的变化,反正我是不喜欢的,你就弄一个什么开头啊,到时候,我一点就知道有哪些方法了,他这里有 `list*`, `get*`,反正就是一个字——没必要。 先看下接口说明: ```java /** ** 查询列表 *
* * @param queryWrapper 实体对象封装操作类 * {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List* 根据 ID 查询 *
* * @param id 主键ID */ T getById(Serializable id); /** ** 根据 Wrapper,查询一条记录 *
* * @param queryWrapper 实体对象封装操作类 * {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ T getOne(Wrapper* 从list中取第一条数据返回对应List中泛型的单个结果 *
* * @param list * @param* 翻页查询 *
* * @param page 翻页对象 * @param queryWrapper 实体对象封装操作类 * {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ IPage* 填充Wrapper *
* * @param page 分页对象 * @param wrapper SQL包装对象 */ @SuppressWarnings("unchecked") public static Wrapper> fillWrapper(IPage> page, Wrapper> wrapper) { if (null == page) { return wrapper; } if (ArrayUtils.isEmpty(page.ascs()) && ArrayUtils.isEmpty(page.descs()) && ObjectUtils.isEmpty(page.condition())) { return wrapper; } QueryWrapper qw; if (null == wrapper) { qw = new QueryWrapper<>(); } else { qw = (QueryWrapper) wrapper; } // 排序 if (ArrayUtils.isNotEmpty(page.ascs())) { qw.orderByAsc(page.ascs()); } if (ArrayUtils.isNotEmpty(page.descs())) { qw.orderByDesc(page.descs()); } // MAP 参数查询 if (ObjectUtils.isNotEmpty(page.condition())) { qw.allEq(page.condition()); } return qw; } /** ** 根据 entity 条件,查询全部记录(并翻页) *
* * @param page 分页查询条件(可以为 RowBounds.DEFAULT) * @param queryWrapper 实体对象封装操作类(可以为 null) */ IPage* 自定义枚举接口 *
* * @author hubin * @since 2017-10-11 */ public interface IEnum