SpringCloud微服务开发与实战之批量新增
- package com.itheima.mp;
-
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.itheima.mp.domain.po.User;
- import com.itheima.mp.mapper.UserMapper;
- import com.itheima.mp.service.IUserService;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
-
- import java.time.LocalDateTime;
- import java.util.ArrayList;
- import java.util.List;
-
- @SpringBootTest
- class MpDemoApplicationTests {
-
- @Autowired
- private UserMapper userMapper;
- @Autowired
- private IUserService userService;
-
- @Test
- void testInsert() {
- User user = new User();
- user.setId(5L);
- user.setUsername("Lucya");
- user.setPassword("123");
- user.setPhone("18688990011");
- user.setBalance(200);
- user.setInfo("{"age": 24, "intro": "英文老师", "gender": "female"}");
- user.setCreateTime(LocalDateTime.now());
- user.setUpdateTime(LocalDateTime.now());
- userMapper.insert(user);
- }
-
- @Test
- void testSelectById() {
- User user = userMapper.selectById(5L);
- System.out.println("user = " + user);
- }
-
- @Test
- void testSelectByIds() {
- List<User> users = userMapper.selectByIds(List.of(1L, 2L, 3L, 4L, 5L));
- users.forEach(System.out::println);
- }
-
- @Test
- void testUpdateById() {
- User user = new User();
- user.setId(5L);
- user.setBalance(20000);
- userMapper.updateById(user);
- }
-
- @Test
- void testDelete() {
- userMapper.deleteById(5L);
- }
- // 查询:查询出名字中带o的,存款大于等于1000元的人。代码如下:
- @Test
- void testQueryWrapper() {
- QueryWrapper<User> wrapper = new QueryWrapper<User>()
- .select("id", "username", "info", "balance")
- .like("username", "o")
- .ge("balance", 1000);
- List<User> users = userMapper.selectList(wrapper);
- users.forEach(System.out::println);
- }
- // 更新用户名为jack的用户的余额为2000
- @Test
- void testUpdateByQueryWrapper() {
- // 1.构建查询条件 where name = "Jack"
- QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("username", "Jack");
- // 2.更新数据,user中非null字段都会作为set语句
- User user = new User();
- user.setBalance(2000);
- userMapper.update(user, wrapper);
- }
-
- // 更新id为1,2,4的用户的余额,扣200
- @Test
- void testUpdateWrapper() {
- List<Long> ids = List.of(1L, 2L, 4L);
- // 1.生成SQL
- UpdateWrapper<User> wrapper = new UpdateWrapper<User>()
- .setSql("balance = balance - 200")// SET balance = balance - 200
- .in("id", ids); // WHERE id in (1, 2, 4)
- // 2.更新,注意第一个参数可以给null,也就是不填更新字段和数据,
- // 而是基于UpdateWrapper中的setSQL来更新
- userMapper.update(null, wrapper);
- }
-
- // LambdaQueryWrapper方式
- @Test
- void testLambdaQueryWrapper() {
- // 1.构建条件 WHERE username LIKE "%o%" AND balance >= 1000
- LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
- .select(User::getId, User::getUsername, User::getInfo, User::getBalance)
- .like(User::getUsername, "o")
- .ge(User::getBalance, 1000);
- // 2.查询
- List<User> users = userMapper.selectList(wrapper);
- users.forEach(System.out::println);
- }
- // 自定义sql
- @Test
- void testCustomWrapper() {
- // 1.准备自定义查询条件
- List<Long> ids = List.of(1L, 2L, 4L);
- int balance = 200;
- LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().in(User::getId, ids);
- // 2.调用mapper的自定义方法,直接传递Wrapper
- userMapper.deductBalanceByIds(wrapper,balance);
- }
-
- @Test
- void testSaveUser() {
- User user = new User();
- user.setId(8L);
- user.setUsername("Lucyaaa");
- user.setPassword("123");
- user.setPhone("18688990011");
- user.setBalance(200);
- user.setInfo("{"age": 24, "intro": "英文老师", "gender": "female"}");
- user.setCreateTime(LocalDateTime.now());
- user.setUpdateTime(LocalDateTime.now());
- userService.save(user);
- }
- @Test
- void testQuery() {
- List<User> users = userService.listByIds(List.of(1L, 2L, 3L, 4L, 5L));
- users.forEach(System.out::println);
- }
-
- @Test
- void testSaveOneByOne() {
- long b = System.currentTimeMillis();
- for (int i = 1; i <= 100000; i++) {
- userService.save(buildUser(i));
- }
- long e = System.currentTimeMillis();
- System.out.println("耗时:" + (e - b)/1000 + "秒");
- }
-
- private User buildUser(int i) {
- User user = new User();
- user.setUsername("user_" + i);
- user.setPassword("123");
- user.setPhone("" + (18688190000L + i));
- user.setBalance(0);
- user.setInfo("{"age": 1}");
- user.setCreateTime(LocalDateTime.now());
- user.setUpdateTime(user.getCreateTime());
- return user;
- }
-
- @Test
- void testJinHei() {
- // 准备100万条数据
- List<User> list = new ArrayList<>(1000);
- long b = System.currentTimeMillis();
- for (int i = 1; i <= 100000; i++) {
- list.add(buildUser(i));
- // 每1000条批量插入一次
- if (i % 1000 == 0) {
- userService.saveBatch(list);
- list.clear();
- }
- }
- long e = System.currentTimeMillis();
- System.out.println("耗时:" + (e - b)/1000 + "秒");
- }
- }
复制代码
|