02_MybatisPlus—CRUD 接口

1 Service CRUD 接口

  1. 通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆。
  2. 泛型 T 为任意实体对象

1.1 Save

在这里插入图片描述

// 插入一条记录(选择字段,策略插入)
boolean save(T entity);

User afanda = new User(100L, "afanda", 25, "123456789@qq.com");
boolean res = userService.save(afanda);

// 插入(批量)
boolean saveBatch(Collection entityList);

User afanda = new User(102L, "afanda", 25, "123456789@qq.com");
User dafenqi = new User(103L, "dafenqi", 25, "123456789@qq.com");
User lining = new User(104L, "lining", 25, "123456789@qq.com");
User alidasi = new User(105L, "alidasi", 25, "123456789@qq.com");
List<User> users = Arrays.asList(afanda, dafenqi, lining, alidasi);

// 插入(批量)
boolean saveBatch(Collection entityList, int batchSize);

        User afanda = new User(102L, "afanda", 25, "123456789@qq.com");
        User dafenqi = new User(103L, "dafenqi", 25, "123456789@qq.com");
        User lining = new User(104L, "lining", 25, "123456789@qq.com");
        User alidasi = new User(105L, "alidasi", 25, "123456789@qq.com");
        List<User> users = Arrays.asList(afanda, dafenqi, lining, alidasi);
        boolean res = userService.saveBatch(users, 2);

在这里插入图片描述

1.2 SaveOrUpdate

在这里插入图片描述

// TableId 注解存在更新记录,否插入一条记录
boolean saveOrUpdate(T entity);

        User afanda = new User(102L, "Lenin", 25, "123456789@qq.com");
        boolean res = userService.saveOrUpdate(afanda);

在这里插入图片描述
在这里插入图片描述
// 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
boolean saveOrUpdate(T entity, Wrapper updateWrapper);

        UpdateWrapper<User> wrapper = new UpdateWrapper<User>().eq("name", "Stalin");
        User stalin = new User(106L, "Stalin", 25, "stalin@qq.com");
        boolean res = userService.saveOrUpdate(stalin, wrapper);

在这里插入图片描述
// 批量修改插入
boolean saveOrUpdateBatch(Collection entityList);
// 批量修改插入
boolean saveOrUpdateBatch(Collection entityList, int batchSize);

1.3 Remove

在这里插入图片描述

// 根据 entity 条件,删除记录
boolean remove(Wrapper queryWrapper);

        QueryWrapper<User> queryWrapper = new QueryWrapper<User>().eq("name", "Jone");
        boolean res = userService.remove(queryWrapper);

在这里插入图片描述
// 根据 ID 删除
boolean removeById(Serializable id);
// 根据 columnMap 条件,删除记录
boolean removeByMap(Map<String, Object> columnMap);

        Map<String, Object> map = new HashMap<>();
        map.put("name", "Jack");
        boolean res = userService.removeByMap(map);

在这里插入图片描述
// 删除(根据ID 批量删除)
boolean removeByIds(Collection<? extends Serializable> idList);

1.4 Update

在这里插入图片描述

// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
boolean update(Wrapper updateWrapper);

        boolean res = userService.update(new UpdateWrapper<User>().set("name", "Zhukov").eq("id", 3));

在这里插入图片描述

// 根据 whereWrapper 条件,更新记录
boolean update(T updateEntity, Wrapper whereWrapper);

        User user = new User(106L, "Mark Huafei", 25, "Mark Huafei@qq.com");
        UpdateWrapper<User> wrapper = new UpdateWrapper<User>().eq("id", 106L);

在这里插入图片描述

// 根据 ID 选择修改
boolean updateById(T entity);

        User user = new User(106L, "Jack Jones", 25, "Jack Jones@qq.com");
        boolean res = userService.updateById(user);

在这里插入图片描述
// 根据ID 批量更新
boolean updateBatchById(Collection entityList);

// 根据ID 批量更新
boolean updateBatchById(Collection entityList, int batchSize);

1.5 Get

在这里插入图片描述

// 根据 ID 查询
T getById(Serializable id);

        User user = userService.getById(106L);

在这里插入图片描述

// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last(“LIMIT 1”)
T getOne(Wrapper queryWrapper);

        User user = userService.getOne(new QueryWrapper<User>().eq("email", "123456789@qq.com"));

在这里插入图片描述
报错信息:Expected one result (or null) to be returned by selectOne(), but found: 4

// 根据 Wrapper,查询一条记录
T getOne(Wrapper queryWrapper, boolean throwEx);

// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper queryWrapper);

        Map<String, Object> userMap = userService.getMap(new QueryWrapper<User>().eq("email", "123456789@qq.com"));

在这里插入图片描述
// 根据 Wrapper,查询一条记录
V getObj(Wrapper queryWrapper, Function<? super Object, V> mapper);

1.6 List

在这里插入图片描述
// 查询所有
List list();

        List<User> users = userService.list();

在这里插入图片描述
// 查询列表
List list(Wrapper queryWrapper);

        List<User> users = userService.list(new QueryWrapper<User>().eq("email", "123456789@qq.com"));

在这里插入图片描述
// 查询(根据ID 批量查询)
Collection listByIds(Collection<? extends Serializable> idList);

        List<User> users = userService.listByIds(Arrays.asList(3, 4, 5));

在这里插入图片描述
// 查询(根据 columnMap 条件)
Collection listByMap(Map<String, Object> columnMap);

// 查询所有列表
List<Map<String, Object>> listMaps();

// 查询列表
List<Map<String, Object>> listMaps(Wrapper queryWrapper);

// 查询全部记录
List listObjs();

// 查询全部记录
List listObjs(Function<? super Object, V> mapper);

// 根据 Wrapper 条件,查询全部记录
List listObjs(Wrapper queryWrapper);

// 根据 Wrapper 条件,查询全部记录
List listObjs(Wrapper queryWrapper, Function<? super Object, V> mapper);

1.7 Page

在这里插入图片描述

package com.zs.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }
}

// 无条件分页查询
IPage page(IPage page);

 /**
         * Params:
         * current – 当前页
         * size – 每页显示条数
         */
        Page<User> page = new Page<>(2, 2);
        Page<User> userPage = userService.page(page);
        System.out.println("getRecords :" + userPage.getRecords());
        System.out.println("getCurrent :" + userPage.getCurrent());
        System.out.println("getOrders :" + userPage.getOrders());
        System.out.println("getSize :" + userPage.getSize());
        System.out.println("getTotal :" + userPage.getTotal());
        System.out.println("getPages :" + userPage.getPages());

在这里插入图片描述
// 条件分页查询
IPage page(IPage page, Wrapper queryWrapper);

// 无条件分页查询
IPage<Map<String, Object>> pageMaps(IPage page);

// 条件分页查询
IPage<Map<String, Object>> pageMaps(IPage page, Wrapper queryWrapper);

1.8 Count

// 查询总记录数
int count();

        int res = userService.count();

在这里插入图片描述
// 根据 Wrapper 条件,查询总记录数
int count(Wrapper queryWrapper);

        int res = userService.count(new QueryWrapper<User>().eq("email", "123456789@qq.com"));

在这里插入图片描述

1.9 Chain

1.9.1 query

// 链式查询 普通
QueryChainWrapper query();

        Integer res = new QueryChainWrapper<User>(userMapper)
                .eq("email", "123456789@qq.com")
                .count();
        System.out.println(res);

在这里插入图片描述

        List<User> res = new QueryChainWrapper<User>(userMapper)
                .eq("email", "123456789@qq.com")
                .list();
        System.out.println(res);

在这里插入图片描述
// 链式查询 lambda 式。
LambdaQueryChainWrapper lambdaQuery();

        List<User> res = new LambdaQueryChainWrapper<User>(userMapper)
                .eq(User::getAge, 25)
                .list();
        System.out.println(res);

在这里插入图片描述

2 Mapper CRUD 接口

2.1 Insert

// 插入一条记录
int insert(T entity);

        User user = new User(9L, "Martyn Davies", 25, "Martyn Davies@qq.com");
        int res = userMapper.insert(user);

在这里插入图片描述

2.2 Delete

在这里插入图片描述

// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper wrapper);

        int res = userMapper.delete(new QueryWrapper<User>().eq("id", 9L));

在这里插入图片描述
// 删除(根据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);

2.3 Update

在这里插入图片描述

// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper whereWrapper);

        User user = new User(1L, "Maria cangai", 25, "Maria cangai@qq.com");
        int res = userMapper.update(user, new UpdateWrapper<User>().eq("id", 1L));

在这里插入图片描述
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);

2.4 Select

在这里插入图片描述

// 根据 ID 查询
T selectById(Serializable id);

// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper);

        User user = userMapper.selectOne(new QueryWrapper<User>().eq("email", "cangai@qq.com"));

// 查询(根据ID 批量查询)
List selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

// 根据 entity 条件,查询全部记录
List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);

// 查询(根据 columnMap 条件)
List selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper queryWrapper);

// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List selectObjs(@Param(Constants.WRAPPER) Wrapper queryWrapper);

        List<Object> users = userMapper.selectObjs(new QueryWrapper<User>().eq("email", "123456789@qq.com"));

在这里插入图片描述
// 根据 entity 条件,查询全部记录(并翻页)
IPage selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);

        Page<User> page = userMapper.selectPage(new Page<User>(1, 2), 
                new QueryWrapper<User>().eq("email", "123456789@qq.com"));

在这里插入图片描述
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值