添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
BaseMapper

MyBatis-Plus 提供了一个通用的增删改查的 Mapper ,可以通过自定义Mapper接口继承 BaseMapper<T> 完成基础的增删改查

@Mapper
public interface UserMapper extends BaseMapper<User> {
    Select
// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录, 如果查询结果超过1条则会报TooManyResultsException异常
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);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询表中所有数据
List<User> userList = userMapper.selectList(null);
userList.forEach(System.out::println);
// 根据id查询,例如id=2的用户信息
userMapper.selectById(2); 
// 多条件查询
// 根据id和name进行查询
// 方法1: 使用QueryWrapper
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("id",id);
qw.eq("name",name);
userMapper.selectList(qw);
// 方法2: 使用selectByMap
// 返回一个List
HashMap<String,Object> map = new HashMap<>();
map.put("id",1);
map.put("name","Jone");
System.out.println(userMapper.selectByMap(map));
// 查询有多少条数据
System.out.println("mapper.selectCount(null) = " + userMapper.selectCount(null));
// selectList查询部分字段,会返回所有的,没查询的值为null
// 而selectMaps只会返回你查询的字段
// 查询多个字段的值,null表示返回全部字段
System.out.println("mapper.selectMaps(null) = " + userMapper.selectMaps(null));
// 查询部分字段
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("name", "age");
List<Map<String, Object>> users = userMapper.selectMaps(queryWrapper);
users.forEach(System.out::println);
// 查询单字段的值,null表示返回主键值
// 注意,如果填了多个字段,只返回第一个字段的值
System.out.println("mapper.selectObjs(null) = " + userMapper.selectObjs(null));
// 表中是否存在数据
System.out.println("mapper.exists(null) = " + userMapper.exists(null));
// 同时查询多个id的用户数据
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(2L);
list.add(3L);
System.out.println("userMapper.selectBatchIds(list) = " + userMapper.selectBatchIds(list));
    Insert
// 插入一条记录
int insert(T entity);
User u = new User(7L,"admin",18,"xxx");
userMapper.insert(u);
    update
// 根据whereEntity条件,更新记录
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
// 根据ID修改
int updateById(@Param(Constants.ENTITY) T entity);
# 根据用户id找到该用户然后修改他的名字
UpdateWrapper<User> userUpdateWrappers = new UpdateWrapper<>();
userUpdateWrappers.eq("id",2).set("name","bbb");
System.out.println(userMapper.update(null,userUpdateWrappers));
# 根据id修改其他字段值
User u = new User(1,"aaa",19,"[email protected]");
userMapper.updateById(u);
    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);
// 根据id进行删除
// 返回值为受影响的行数
System.out.println(userMapper.deleteById(2));
// 利用键值对进行多条件删除
HashMap<String,Object> map = new HashMap<>();
map.put("id",3);
map.put("name","Tom");
System.out.println("userMapper.deleteByMap(map) = " + userMapper.deleteByMap(map));
// 根据id列表批量删除数据
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(3L);
list.add(5L);
System.out.println("userMapper.deleteBatchIds(list) = " + userMapper.deleteBatchIds(list));
// 利用QueryWrapper删除
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",1);
queryWrapper.eq("name","Jone");
System.out.println("userMapper.delete(queryWrapper) = " + userMapper.delete(queryWrapper));
    设置id自增