Mybatis-Plus 常用操作(附代码)二

练习代码:

https://blog.csdn.net/v3424/article/details/122043351

Mybatis Plus学习及入门(附代码)一

https://blog.csdn.net/v3424/article/details/122043351

4. Mybatis Plus 基本操作

4.1 常见API方法

BaseMapper 封装CRUD操作,泛型 T 为任意实体对象

  • 增删改

    方法名描述
    int insert(T entity)插入一条记录,entity 为 实体对象
    int delete(Wrapper wrapper)根据 entity 条件,删除记录,wrapper 可以为 null
    int deleteBatchIds(Collection idList)根据ID 批量删除
    int deleteById(Serializable id)根据 ID 删除
    int deleteByMap(Map<String, Object> map)根据 columnMap 条件,删除记录
    int update(T entity, Wrapper updateWrapper)根据 whereEntity 条件,更新记录
    int updateById(T entity);根据 ID 修改
  • 查询

    方法名描述
    T selectById(Serializable id)根据 ID 查询
    T selectOne(Wrapper queryWrapper)根据 entity 条件,查询一条记录
    List selectBatchIds(Collection idList)根据ID 批量查询
    List selectList(Wrapper queryWrapper)根据 entity 条件,查询全部记录
    List selectByMap(Map<String, Object> columnMap)根据 columnMap 条件
    List<Map<String, Object>> selectMaps(Wrapper queryWrapper)根据 Wrapper 条件,查询全部记录
    List selectObjs( Wrapper queryWrapper)根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
    IPage selectPage(IPage page, Wrapper queryWrapper)根据 entity 条件,查询全部记录(并翻页)
    IPage<Map<String, Object>> selectMapsPage(IPage page, Wrapper queryWrapper)根据 Wrapper 条件,查询全部记录(并翻页)
    Integer selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper)根据 Wrapper 条件,查询总记录数

4.2 添加操作(insert)

	/**
     * 添加数据
     */
    @Test
    public void testInsert() {
        Customer customer = new Customer();
        customer.setCid(5);
        customer.setCname("张三");
        customer.setPassword("6666");
        int i = customerDao.insert(customer);
        System.out.println(i);
    }
  • 获得自动增长列信息
    在这里插入图片描述
    /**
     * 添加数据
     */
    @Test
    public void testInsert() {
        Customer customer = new Customer();
        customer.setCname("张三");
        customer.setPassword("6666");
        int i = customerDao.insert(customer);
        System.out.println(i);
    }
    

4.3 更新和更新所有

  • 通过id更新
    /**
     * 更新数据
     */
    @Test
    public void testUpdate() {
        Customer customer = new Customer();
        customer.setCid(4);
        customer.setCname("张三");
        customer.setPassword("6666");
        // 需要给Customer设置@TableId
        customerDao.updateById(customer);
    }
    
  • 更新所有
    @Test
    public void testUpdate2() {
        Customer customer = new Customer();
        customer.setCname("张三");
        customer.setPassword("777");
        // 更新所有
        customerMapper.update(customer,null);
    }
    

4.4 删除和批量删除

  • 根据id进行删除
     /**
     * 删除数据
     */
    @Test
    public void testDelete() {
    	// 需要给Customer设置@TableId
        customerDao.deleteById(4);
    }
    
  • 批量删除
    /**
     * 批量删除
     */
    @Test
    public void testDeleteBath() {
    	// 需要给Customer设置@TableId
        customerDao.deleteBatchIds(Arrays.asList(4, 5));
    }
    

* 5. 查询操作

5.1 Map条件查询

	/**
     * Map条件查询
     */
    @Test
    public void testSelectMap() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("cname", "张三");
        List<Customer> list = customerDao.selectByMap(map);
        list.forEach(System.out::println);
    }

5.2 QueryWrapper

5.2.1 Wrapper介绍

在这里插入图片描述
结构图:
在这里插入图片描述

  • Wrapper : 条件构造抽象类,最顶端父类

    • AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
      • QueryWrapper : Entity 对象封装操作类,不是用lambda语法
      • UpdateWrapper : Update 条件封装,用于Entity对象更新操作
      • AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
        • LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
        • LambdaUpdateWrapper : Lambda 更新封装Wrapper
  • 如果想进行复杂条件查询,那么需要使用条件构造器 Wapper,涉及到如下方法
    selectOneselectCountselectListselectMapsselectObjsupdatedelete

  • 拼凑条件相关关键字
    查询方式说明
    setSqlSelect设置 SELECT 查询字段
    whereWHERE 语句,拼接 + WHERE 条件
    andAND 语句,拼接 + AND 字段=值
    andNewAND 语句,拼接 + AND (字段=值)
    orOR 语句,拼接 + OR 字段=值
    orNewOR 语句,拼接 + OR (字段=值)
    eq等于=
    allEq基于 map 内容等于=
    ne不等于<>
    gt大于>
    ge大于等于>=
    lt小于<
    le小于等于<=
    like模糊查询 LIKE
    notLike模糊查询 NOT LIKE
    inIN 查询
    notInNOT IN 查询
    isNullNULL 值查询
    isNotNullIS NOT NULL
    groupBy分组 GROUP BY
    havingHAVING 关键词
    orderBy排序 ORDER BY
    orderAscASC 排序 ORDER BY
    orderDescDESC 排序 ORDER BY
    existsEXISTS 条件语句
    notExistsNOT EXISTS 条件语句
    betweenBETWEEN 条件语句
    notBetweenNOT BETWEEN 条件语句
    addFilter自由拼接 SQL
    last拼接在最后,例如:last(“LIMIT 1”)

5.2.2 条件查询

  • 基本多条件查询
    @Test
    public void testQueryWrapper() {
        QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
        //TODO:等值查询
        queryWrapper.eq("password", "1234");
        //TODO:模糊查询
        queryWrapper.like("cname", "o");
        //TODO:范围查询
        queryWrapper.ge("money", 800);
        queryWrapper.le("money", 2000);
    
        List<Customer> list = customerDao.selectList(queryWrapper);
        list.forEach(System.out::println);
    }
    
  • 条件判断
    @Test
    public void testQueryWrapper2() {
        CustomerVo vo = new CustomerVo("o", "1234", "800", "2000");
        QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
        //TODO:模糊查询
        queryWrapper.like(StringUtils.isNotBlank(vo.getCname()), "cname", vo.getCname());
        //TODO:等值查询
        queryWrapper.eq(StringUtils.isNotBlank(vo.getPassword()), "password", vo.getPassword());
        //TODO:范围查询
        queryWrapper.ge(StringUtils.isNotBlank(vo.getMinMoney()), "money", vo.getMinMoney());
        queryWrapper.le(StringUtils.isNotBlank(vo.getMaxMoney()), "money", vo.getMaxMoney());
    
        List<Customer> list = customerDao.selectList(queryWrapper);
        list.forEach(System.out::println);
    }
    

5.2.3 条件更新

  • 基本更新
    /**
     * 条件更新
     */
    @Test
    public void testUpdateByQuery() {
        Customer customer = new Customer();
        customer.setVersion(1);
        UpdateWrapper<Customer> wrapper = new UpdateWrapper<>();
        wrapper.in("cid", 1, 2, 3);
    
        int i = customerDao.update(customer, wrapper);
        System.out.println(i);
    }
    

Mybatis Plus 分页插件

https://blog.csdn.net/v3424/article/details/122046364

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值