Usage of select in () query in mybatis

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.haiyoung.hyweb.mapper.RoleMapper">

    <resultMap type="com.haiyoung.hyweb.biz.user.Role" id="RoleResult">
        <id column="role_id" property="roleId"/>
        <result column="role_name" property="roleName"/>
    </resultMap>

    <select id="roles" resultMap="RoleResult">
        select
        role_id, role_name
        from
        role
        where role_id in (
            select role_id from user_role
        )

    </select>

    <select id="getRolesByIds" parameterType="java.util.List" resultMap="RoleResult">
        select
        role_id, role_name
        from
        role
        where role_id in
        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>
</mapper>
role table
role_id    role_name
R100	user
R200	test_user
R900 admin

user_role表
user_id   role_id
haiyoung R100
haiyoung R900
haiyoung001 R200
@Mapper
@Repository
public interface RoleMapper {

    List<Role> roles();

    List<Role> getRolesByIds(List<String> list);
}
@Service
public class UserService {

    @Autowired
    private RoleMapper roleMapper;

    public List<Role> getUsers(){
        return roleMapper.roles();
    }

    public List<Role> getUsers(List<String> list){
        return roleMapper.getRolesByIds (list);
    }
}

Write two @Test tests

@SpringBootTest
@RunWith(SpringRunner.class)
public class UserTest {

    @Autowired
    private UserService userService;

    @Test
    public void rolesTest(){
        List<Role> list = userService.getUsers();
        list.forEach(user ->{
            System.out.println (user.getRoleId () + ":" + user.getRoleName ());
        });
    }

    @Test
    public void rolesTest2(){
        List<String> paramsList = new ArrayList<>();
        paramsList.add("R900");
        paramsList.add("R200");
        List<Role> list = userService.getUsers(paramsList);
        list.forEach(user ->{
            System.out.println (user.getRoleId () + ":" + user.getRoleName ());
        });
    }
}

The test results are as follows:

R100:user
R900: admin
R200:test_user

R200:test_user
R900: admin

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325385749&siteId=291194637