<?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表 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); } }
写了两个@Test测试一下
@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()); }); } }
测试结果如下:
R100:user R900:admin R200:test_user R200:test_user R900:admin