Mybatis-plus 学习

本文介绍了Mybatis-plus的使用步骤,包括导入依赖、启动配置,以及如何进行通用Mapper的操作,如测试新增、ID查询、Map条件查询和排除实体类中不存在的列。此外,还详细讲解了QueryWrapper作为条件构造器进行查询的方法,帮助读者深入理解Mybatis-plus的查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源

  • 慕课网 https://www.imooc.com/video/19500
  • 官方文档

使用步骤

  1. 导入依赖
  2. boot 启动类上加@MapperSacn 指定接口所在的包
  3. 接口 extends BaseMapper<T> (T 为要操作的实体类)
  4. service层的接口 extends IService<T> (T 为要操作的实体类)

测试使用 通用Mapper

使用的是 interface BaseMapper<T> extends Mapper<T>
Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能

测试新增

    /**
     * 测试新增 baseMapper.insert();
     */
    @Test
    public void test1(){
        UserInfoDmo userInfoDmo = new UserInfoDmo();
//        userInfoDmo.setId(-1L);
        userInfoDmo.setUserName("测试mp新增");
        userInfoDmo.setPhone("17714575412");
        userInfoDmo.setGender(0);
        userInfoDmo.setEmail("17714575412@163.com");
        userInfoDmo.setCardNumber("6228449101233");
        userInfoDmo.setFaceId(2333L);
        userInfoDmo.setFingerprintId(12333L);
        userInfoDmo.setEntId(123333L);
        userInfoDmo.setDepartmentId(2L);
        userInfoDmo.setType(0);
        userInfoDmo.setRemark("999");
        userInfoDmo.setIsDelete(0);
        userInfoDmo.setCreateTime(FormatUtils.formatDate(new Date()));
        userInfoDmo.setModifyTime(FormatUtils.formatDate(new Date()));
        userInfoDmo.setCreateId(0L);
        userInfoDmo.setModifyId(0L);
        userInfoDmo.setGroupId(0L);
        userInfoDmo.setUserGroupId(0L);

        int insert = userInfoService.getBaseMapper().insert(userInfoDmo);
        System.out.println("受影响的行数: "+insert);
    }

根据id查询 和 根据id列表查询

    /**
     * 根据id查询 和 根据id列表查询
     */
    @Test
    public void test2(){
        BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
        UserInfoDmo userInfoDmo = baseMapper.selectById(1165809913960329218L);
        System.out.println("查询出来的结果: "+userInfoDmo.toString());
        System.out.println("--------------------------------------");
        List<UserInfoDmo> userInfoDmos = baseMapper.selectBatchIds(Arrays.asList(1164419024302030850L, 1164421403969724417L, 1165143963833339905L));
        userInfoDmos.forEach(System.out::println);
    }

根据Map 条件查询 (map 中存的 key是数据表中的列名 不是实体类的字段名)

        BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("face_id", 22);
        List<UserInfoDmo> userInfoDmos = baseMapper.selectByMap(hashMap);
        userInfoDmos.forEach(System.out::println);

排除实体类中字段在数据表中不存在的列

@TableField(exit=false)
在这里插入图片描述

以条件构造器为参数的查询方法

AbstractWrapper 条件构造器

QueryWrapper

    /**
     * 根据条件构造器查询
     * 姓名中包含test 男的 "2019-08-21"注册的
     */
    @Test
    public void test4(){
        QueryWrapper<UserInfoDmo> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("create_time","2019-08-21 ").like("user_name","test").eq("gender",1);
        BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
        List<UserInfoDmo> userInfoDmos = baseMapper.selectList(queryWrapper);
        userInfoDmos.forEach(System.out::println);
    }

查询结果排除某些字段信息

    /**
     * QueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) 
     * 排除 class 中某些不需要查询处理的列 
     */
    @Test
    public void selectByWrapper(){
//        UserInfoDao
        BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
//        构造查询条件
        QueryWrapper<UserInfoDmo> userInfoDmoQueryWrapper = new QueryWrapper<>();
        userInfoDmoQueryWrapper.select(UserInfoDmo.class, userInfo->!userInfo.getColumn().equals("modify_time")
                                        &&!userInfo.getColumn().equals("modify_id"))
                                        .like("user_name","2");
        List<UserInfoDmo> userInfoDmos = baseMapper.selectList(userInfoDmoQueryWrapper);
        userInfoDmos.forEach(System.out::println);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值