官方CRUD接口链接:https://mp.baomidou.com/guide/crud-interface.html#chain
相关说明:
1.通用CRUD封装BaseMapper接口。
2.泛型 T 为任意实体对象,如User,Student。
3.参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键。
4.对象 Wrapper 为 条件构造器,条件构造器主要有:AbstractWrapper(父类),#QueryWrapper,UpdateWrapper,Wrapper。
5.为了避免混淆,MapperCRUD接口命名和ServiceCRUD接口命名有所不同,主要为Insert,Delete,Update,Select,
一、Insert
// 插入一条记录
//T代表实体类,比如自定义的User类
int insert(T entity);
demo示例
//添加,根据你的实体类自定义
User user=new User("trikey","123456");
userMapper.insert(user);
二、Delete
// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
demo示例
// 根据 entity 条件,删除记录
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.isNotNull("username");
userMapper.delete(queryWrapper); //根据实体类条件,删除记录
// 根据 ID 删除
userMapper.deleteById(3);
// 删除(根据ID 批量删除)
List<Integer> idlist=new ArrayList<Integer>();
idlist.add(4);
idlist.add(3);
idlist.add(5);
userMapper.deleteBatchIds(idlist);
//根据 columnMap 条件,删除记录
//key:存放数据库字段名,value:存放字段在值
Map<String,Object> c=new HashMap<>();
c.put("username","trikey1");
c.put("username","trikey2");
c.put("username","trikey3");
System.out.println(c.size());
userMapper.deleteByMap(c);
三、Update
// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
demo示例
// 根据 ID 修改
userMapper.updateById(user1);
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
// 根据 whereWrapper 条件,更新记录
queryWrapper.isNotNull("username");
User user9=new User("trikey888","123456");
userMapper.update(user9,queryWrapper); //根据 whereWrapper 条件,更新记录,条件为null的话就相当于没有条件,等于所有记录都更改
四、Select
// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 entity 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 entity 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
demo示例
// 根据 ID 查询
user1 = userMapper.selectById(3);
// 根据 Wrapper 条件,查询总记录数
Integer integer = userMapper.selectCount(null);
// 查询(根据ID 批量查询)
List<User> userList1 = userMapper.selectBatchIds(idlist);
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> maps = userMapper.selectMaps(null);
// 根据 entity 条件,查询全部记录
List<User> userList=userMapper.selectList(null);
//打印
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("username","trikey88");
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> objects = userMapper.selectObjs(queryWrapper);
objects.forEach(System.out::println);
// 根据 entity 条件,查询全部记录(并翻页)
Page<User> page = new Page<>(1, 2);
IPage<User> iPage = userMapper.selectPage(page, queryWrapper);
System.out.println(iPage.getRecords()); //获得分页记录*/