DB_使用mybatis_plus快速实现单表的CRUD
1.通用Service
说明:
- 通用 Service CRUD 封装
IService
接口,进一步封装 CRUD 采用get 查询单行
remove 删除
list 查询集合
page 分页
前缀命名方式区分Mapper
层避免混淆,
MyBatis-Plus中有一个接口 **IService
**和其实现类 **ServiceImpl
**,封装了常见的业务层逻辑,详情查看源码IService和ServiceImpl
因此我们在使用的时候仅需在自己定义的**Service
接口中继承IService
接口,在自己的实现类中实现自己的Service并继承ServiceImpl
**即可
创建
UserService
并继承IService
1
2
3
4/**
* UserService继承IService模板提供的基础功能
*/
public interface UserService extends IService<User> {}创建
UserService
的实现类并继承ServiceImpl
1
2
3
4
5
6/**
* ServiceImpl实现了IService,提供了IService中基础功能的实现
* 若ServiceImpl无法满足业务需求,则可以使用自定的UserService定义方法,并在实现类中实现
*/
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService{}
IService中的CRUD方法
增加:Save、SaveOrUpdate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 插入一条记录(选择字段,策略插入)
boolean save(T entity);
// 插入(批量)
boolean saveBatch(Collection<T> entityList);
// 插入(批量)
boolean saveBatch(Collection<T> entityList, int batchSize);
// TableId 注解存在更新记录,否插入一条记录
boolean saveOrUpdate(T entity);
// 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);删除:Remove
1
2
3
4
5
6
7
8
9// 根据 entity 条件,删除记录
boolean remove(Wrapper<T> queryWrapper);
// 根据 ID 删除
boolean removeById(Serializable id);
// 根据 columnMap 条件,删除记录
// map格式 属性:值
boolean removeByMap(Map<String, Object> columnMap);
// 删除(根据ID 批量删除)
boolean removeByIds(Collection<? extends Serializable> idList);修改:Update
1
2
3
4
5
6
7
8// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
boolean update(Wrapper<T> updateWrapper);
// 根据 whereWrapper 条件,更新记录
boolean update(T updateEntity, Wrapper<T> whereWrapper);
// 根据 ID 选择修改
boolean updateById(T entity);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);查询:Get、List、Count
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30// 根据 ID 查询
T getById(Serializable id);
// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 查询所有
List<T> list();
// 查询列表
List<T> list(Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
Collection<T> listByIds(Collection<? extends Serializable> idList);
// 查询(根据 columnMap 条件)
Collection<T> listByMap(Map<String, Object> columnMap);
// 查询所有列表
List<Map<String, Object>> listMaps();
// 查询列表
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);
// 查询全部记录
List<Object> listObjs();
List<Object> listObjs(Wrapper<T> queryWrapper);
// 查询总记录数
int count();
// 根据 Wrapper 条件,查询总记录数
int count(Wrapper<T> queryWrapper);
2.BaseMapper<T>
BaseMapper中提供的CRUD方法:
增加:Insert
1
2// 插入一条记录
int insert(T entity);删除:Delete
1
2
3
4
5
6
7
8// 根据 entity 条件,删除记录
int delete(; Wrapper<T> wrapper)
// 删除(根据ID 批量删除)
int deleteBatchIds(; Collection<? extends Serializable> idList)
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(; Map<String, Object> columnMap)修改:Update
1
2
3
4// 根据 whereWrapper 条件,更新记录
int update(; T updateEntity, Wrapper<T> whereWrapper)
// 根据 ID 修改
int updateById(; T entity)查询:Select
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(; Wrapper<T> queryWrapper)
// 查询(根据ID 批量查询)
List<T> selectBatchIds(; Collection<? extends Serializable> idList)
// 根据 entity 条件,查询全部记录
List<T> selectList(; Wrapper<T> queryWrapper)
// 查询(根据 columnMap 条件)
List<T> selectByMap(; Map<String, Object> columnMap)
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(; Wrapper<T> queryWrapper)
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(; Wrapper<T> queryWrapper)
// 根据 entity 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, ; Wrapper<T> queryWrapper)
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, ; Wrapper<T> queryWrapper)
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(; Wrapper<T> queryWrapper)
3.调用Mapper层实现CRUD
3.1 插入
最终执行的结果,所获取的id为1527206783590903810
这是因为MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id
1 | /** |
3.2 删除
b、根据ID批量删除数据
调用方法:int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
1 | /** |
c、根据Map条件删除数据
调用方法:int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
1 | /** |
3.3 修改
调用方法:int updateById(@Param(Constants.ENTITY) T entity);
1 | /** |
3.4 查询
a、根据ID查询用户信息
调用方法:T selectById(Serializable id);
1 | /** |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jackson Zhang!
评论
ValineDisqus