mybatis-plus-CRUD

本文详细介绍了Mybatis-Plus的CRUD操作,包括insert插入记录,利用getId获取主键值;update操作如主键更新、指定字段更新及实体类属性的基本类型处理;delete操作如按主键删除、按条件删除及批处理删除;select操作涵盖单主键查询、批处理查询及多条件Map查询。

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

1.insert操作

insert()返回值int,数据插入成功的行数,成功的记录数。getId()获取主键值。

  • 对应Test测试。
 //添加数据后,获取主键值
    @Test
    public void testInsertGetId(){
        User user = new User();
        user.setName("李四");
        user.setAge(20);
        user.setEmail("lisi@163.com");

        int rows = userDao.insert(user);
        System.out.println("insert user rows:"+rows);

        //获取主键id,刚添加数据库中的数据的id
        int id = user.getId();//主键字段对应的get方法
        System.out.println("主键id:"+id);
    }

2.update操作

  • 1)根据主键值更新
  • UPDATE user SET name=?, email=?, age=? WHERE id=?
    更新了所有非null属性值,条件where id = 主键值
 /**
     * 更新操作update
     */
    @Test
    public void testUpdateUser(){
        User user = new User();
        user.setName("修改的数据");
        user.setAge(22);
        user.setEmail("edit@163.com");
        user.setId(2);
        //执行更新,根据主键值更新
        /**
         * UPDATE user SET name=?, email=?, age=? WHERE id=?
         * 更新了所有非null属性值,条件where id = 主键值
         * */
        int rows = userDao.updateById(user);
        System.out.println("update rows"+rows);
    }
  • 2)控制更新的字段
  • UPDATE user SET name=? WHERE id=?
/**
     * 控制更新的字段
     */
     @Test
    public void testUpdateUser2(){
         User user = new User();
         user.setId(2);
         user.setName("zhangsan");
         //更新数据
         //UPDATE user SET name=? WHERE id=?
         int i = userDao.updateById(user);
         System.out.println("i:"+i);
     }
  • 3)实体类的属性是基本类型
  • UPDATE user SET email=?, age=? WHERE id=?
    判断字段是否要修改,加入到set语句,是根据属性值是否为null。为0也会修改。
    实体类属性,推荐使用包装类型,可以判断是否为null,基本类型int会为0
/**
     * 更新数据:实体类的属性是基本类型 - int age
     */
    @Test
    public void testUpdateUser3(){
        User user = new User();
        user.setId(3);
        user.setEmail("lisi@sina.com");
        //实体对象user:[name = null,email = "lisi@sina.com",age = 0]
        //没有修改name,age
        //判断字段是否要修改,加入到set语句,是根据属性值是否为null。
        //UPDATE user SET email=?, age=? WHERE id=?
        int rows = userDao.updateById(user);
        System.out.println("rows"+rows);
    }

3.delete操作

  • 1)按主键删除一条数据
    • 方法是deleteById()
    • 参数:主键值
    • 返回值:是删除的成功记录数
  • DELETE FROM user WHERE id=?
	@Test
    public void testDeleteById(){
        //DELETE FROM user WHERE id=?
        int rows = userDao.deleteById(3);
        System.out.println("deleteById:"+rows);
    }
  • 2)按条件删除数据,条件是封装到Map对象中
    • 方式:deleteByMap(map对象)
    • 返回值:删除成功的记录数
  • DELETE FROM user WHERE name = ? AND age = ?
	@Test
    public void testDeleteByMap(){
        //创建Map对象,保存条件值
        Map<String,Object> map = new HashMap<>();
        //put("表的字段名",条件值),可以封装多个条件
        map.put("name","zs");
        map.put("age",20);
        //调用删除方法
        //DELETE FROM user WHERE name = ? AND age = ?
        int rows = userDao.deleteByMap(map);
        System.out.println("deleteByMap rows:"+rows);
    }
  • 3)批处理方式,使用多个主键值,删除数据
    • 方法名称:deleteBatchIds()
    • 参数:Collection<? extends Serializable> var1
    • 返回值:删除的记录数
  • DELETE FROM user WHERE id IN ( ? , ? , ? , ? , ? )
	@Test
    public void deleteByBatchId(){
//        List<Integer> ids = new ArrayList<>();
//        ids.add(1);
//        ids.add(2);
//        ids.add(3);
//        ids.add(4);
//        ids.add(5);
        //使用Lambda创建List集合
        List<Integer> ids = Stream.of(1, 2, 3, 4, 5).collect(Collectors.toList());
        //删除操作
        //DELETE FROM user WHERE id IN ( ? , ? , ? , ? , ? )
        int i = userDao.deleteBatchIds(ids);
        System.out.println("deleteBatchIds:"+i);
    }

4.select操作

  • 1)实现查询 selectById,根据主键查询
    • 参数:主键值
    • 返回值:实体对象(唯一的一个对象)
      SELECT id,name,email,age FROM user WHERE id=?
	@Test
    public void testSelectById(){
        /**
         * 生成的sql:SELECT id,name,email,age FROM user WHERE id=?
         * 如果根据主键没有查找到数据,得到的返回值是null
         */
        User user = userDao.selectById(6);
        System.out.println("selectById:"+user);

        //在使用对象之前,需要判断对象是否为null
        if (user != null){
            //业务方法的调用
        }
    }
  • 2)实现批处理查询,根据多个主键值查询,获取到List
    • 方法:selectBatchIds
    • 参数:id的集合
    • 返回值:List
      SELECT id,name,email,age FROM user WHERE id IN ( ? , ? , ? )
	@Test
    public void testSelectBatchIds(){
        List<Integer> ids = new ArrayList<>();
        ids.add(6);
        ids.add(9);
        ids.add(10);

        //查询数据
        //SELECT id,name,email,age FROM user WHERE id IN ( ? , ? , ? )
        List<User> users = userDao.selectBatchIds(ids);
        System.out.println("size:"+users.size());
        for (User u : users) {
            System.out.println("查询的用户:"+u);
        }
    }
  • 使用lambda查询数据
	@Test
    public void testSelectBatchIds2(){
        List<Integer> ids = Stream.of(6, 9, 10,15).collect(Collectors.toList());
        //SELECT id,name,email,age FROM user WHERE id IN ( ? , ? , ? , ? )
        List<User> users = userDao.selectBatchIds(ids);
        //遍历集合
        users.forEach(item-> System.out.println("查询的用户:"+item));
    }
  • 3)使用Map做多条件查询
    • 方法:selectMap()
    • 参数:Map<String,Object>
    • 返回值:List
      SELECT id,name,email,age FROM user WHERE name = ? AND age = ?
	@Test
    public void testSelectMap(){
        //创建Map,封装查询条件
        Map<String,Object> map = new HashMap<>();
        //key是字段名,value:字段值,多个key,是and连接
        map.put("name","zhangsan");
        map.put("age",20);

        //根据Map查询
        //SELECT id,name,email,age FROM user WHERE name = ? AND age = ?
        List<User> users = userDao.selectByMap(map);
        users.forEach(item-> System.out.println("selectByMap:"+item));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值