- 更新
- 新增
mybatis-plus更新:
-
单个更新updateById(),如果将 name设置为null,不会更新数据库,但是如果updateTime 和 creatTime 数据库里设置了自动更新,设置为null也是会更新的。
-
批量更新,service层 继承 ServiceImpl ,其中的 updateBatchById 是批量更新(它里面还是一条一条更新)。
LambdaQueryWrapper
wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getAge, 3); List userList = userMapper.selectList(wrapper); userList.forEach(user -> { System.out.println(user); user.setName("testWlw1131-4"); user.setUpdateTime(null); user.setCreateTime(null); //userMapper.updateById(user); }); //mybatis-plus 自带的批量更新 //userService.updateBatchById(userList,2); userService.updateBatchById(userList); Execute SQL: UPDATE user SET name='testWlw1131-4', age=3, email='1903202403@qq.com', version=8, update_time='2021-11-13 20:12:49.602' WHERe id=1413764856826785803 AND version=7 AND deleted=0 - 如果自己写批量更新:有多种方式,可参考:https://segmentfault.com/a/1190000018084851、 https://www.cnblogs.com/personsiglewine/p/12889619.html
jdbc连接加 :&allowMultiQueries=true @Test public void testBatchUpdate() { LambdaQueryWrapperwrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getAge, 3); List userList = userMapper.selectList(wrapper); userList.forEach(user -> { System.out.println(user); user.setName("testWlw1131-4"); user.setUpdateTime(null); user.setCreateTime(null); //userMapper.updateById(user); }); userMapper.batchUpdate(userList); } Execute SQL: update user SET `name` = 'testWlw1131-4', age = 3, email = '1903202403@qq.com' where id = 1413764856826785795 ; update user SET `name` = 'testWlw1131-4', age = 3, email = '1903202403@qq.com' where id = 1413764856826785797 ; update user SET `name` = 'testWlw1131-4', age = 3, email = '1903202403@qq.com' where id = 1413764856826785803update user `name` = #{item.name}, age = #{item.age}, email = #{item.email} where id = #{item.id}
mybatis-plus 新增:
-
单个新增,不用测试
-
批量插入:service层 继承 ServiceImpl ,其中的 saveBatch 是批量插入(它里面还是一条一条插入)。
List
users = new ArrayList<>(); User user = new User(); //注意 并没设置id user.setName("test-wlw"); user.setAge(3); user.setEmail("1903202403@qq.com"); User user1 = new User(); //注意 并没设置id user1.setName("wlw1-1113-2"); user1.setAge(4); user1.setEmail("2903202403@qq.com"); users.add(user); users.add(user1); users.forEach(user2 -> System.out.println(user2)); //userMapper.batchInsert(users); userService.saveBatch(users); Execute SQL: INSERT INTO user ( name, age, email, create_time, update_time ) VALUES ( 'wlw1-1113-2', 4, '2903202403@qq.com', '2021-11-13 19:30:26.574', '2021-11-13 19:30:26.574' ) - 如果要是自己写批量插入,注意:遍历时< foreach> 不要用open,close标签
insert into user (id, `name`, age, email) values (#{item.id}, #{item.name}, #{item.age}, #{item.email})



