Browse Source

Merge branch 'fix_batch_find_user' into 'Test'

Fix batch find user



See merge request !24

menduo 5 years ago
parent
commit
106e967794

+ 13 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserMapper.java

@@ -60,4 +60,17 @@ public interface UserMapper {
 
     @Select("SELECT * FROM user WHERE id in (${userIds})")
     List<User> findAll(@Param("userIds") String userIds);
+
+    @Select({
+            "<script>",
+            "select",
+            "*",
+            "from user",
+            "where id in",
+            "<foreach collection='userIds' item='id' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "</script>"
+    })
+    List<User> findAllUsers(@Param("userIds") List<Long> userIds);
 }

+ 6 - 5
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/UserServiceImpl.java

@@ -76,11 +76,12 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public List<User> findAll(List<Long> userIds) {
-        List<User> users = new ArrayList<>();
-        for (Long id : userIds) {
-            users.add(userMapper.findById(id));
-        }
-        return users;
+//        List<User> users = new ArrayList<>();
+//        for (Long id : userIds) {
+//            users.add(userMapper.findById(id));
+//        }
+
+        return userMapper.findAllUsers(userIds);
     }
 
     @Override

+ 2 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/wrapper/BaseWrapper.java

@@ -7,6 +7,7 @@ import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -22,7 +23,7 @@ public abstract class BaseWrapper<VO, DATA> {
     public abstract DATA unwrap(VO data);
 
     public List<VO> wrap(List<DATA> data) {
-        return data.stream().map(this::wrap).collect(Collectors.toList());
+        return data.stream().filter(Objects::nonNull).map(this::wrap).collect(Collectors.toList());
     }
 
     public Page<VO> wrap(Page<DATA> data) {

+ 1 - 1
mooctest-user-server/src/main/resources/bootstrap.yaml

@@ -1,4 +1,4 @@
-spring.profiles.active: test
+spring.profiles.active: dev
 spring:
   application:
     name: mooctest-user-server

+ 40 - 0
mooctest-user-server/src/test/java/cn/iselab/mooctest/user/service/impl/UserServiceImplTest.java

@@ -0,0 +1,40 @@
+package cn.iselab.mooctest.user.service.impl;
+
+import cn.iselab.mooctest.user.Application;
+import cn.iselab.mooctest.user.model.User;
+import cn.iselab.mooctest.user.service.UserService;
+import com.google.common.collect.Lists;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.SpringApplicationConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import java.util.List;
+
+/**
+ * @program: mooctest-user
+ * @mail: menduo96@gmail.com
+ * @author: menduo
+ * @create: 2019-12-04 13:36
+ **/
+
+@RunWith(SpringJUnit4ClassRunner.class)//测试的主要组件
+@SpringApplicationConfiguration(classes = Application.class) //设置启动类 加载配置文件
+@WebAppConfiguration
+public class UserServiceImplTest {
+    @Autowired
+    private UserService userService;
+
+    @Test
+    public void test_findAllByIds() {
+        List<Long> ids = Lists.newArrayList(1L,2L,3L);
+        List<User> users = userService.findAll(ids);
+        users.forEach(x ->{
+            System.out.println(x.getName());
+        });
+
+    }
+
+}

+ 39 - 0
mooctest-user-server/src/test/java/cn/iselab/mooctest/user/web/wrapper/UserWrapperTest.java

@@ -0,0 +1,39 @@
+package cn.iselab.mooctest.user.web.wrapper;
+
+import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.user.model.User;
+import com.google.common.collect.Lists;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+/**
+ * @program: mooctest-user
+ * @mail: menduo96@gmail.com
+ * @author: menduo
+ * @create: 2019-12-04 14:34
+ **/
+public class UserWrapperTest {
+    @InjectMocks
+    private UserWrapper userWrapper = new UserWrapper();
+
+    @Test
+    public void test_wrap_if_data_content_null() {
+        User user1 = new User();
+        user1.setId(1L);
+        user1.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        User user2 = new User();
+        user2.setId(2L);
+        user2.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        User user3 = null;
+
+        List<User> users = Lists.newArrayList(user1, user2, user3);
+        List<UserDTO> userDTOS = userWrapper.wrap(users);
+        assertEquals(users.size(),3);
+        assertEquals(userDTOS.size(),2);
+    }
+}