mybatis-多对多查询
用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用多对多查询的需求:查询用户同时查询出该用户的所有角色
对应的结构化查询语言语句:SELECT * FROM USER u,sys_user_role ur,sys_role r WHERE u.id=ur.userId和ur.roleId=r.id
查询的结果:
1)创建Role实体,修改User实体
公共类用户{
私有int id
私有字符串用户名;
私有字符串密码;
私人约会生日;
//代表当前用户具备哪些角色
私人列表角色列表;
}
公共类角色{
私有int id
私有字符串角色名
}
2) 添加UserMapper接口方法
列表用户findaluserandolle();
3)配置UserMapper.xml
!-类型=“用户”用户为核心配置文件设置的类的别名-
结果映射类型="用户"
!-用户的信息-
身份证明(identification)列='userId '属性='id'/id
结果列='用户名'属性='用户名'/结果
结果列='密码'属性='密码'/结果
结果列='生日'属性='生日'/结果
!-用户内部的角色列表信息-
!- ofType='角色'角色为核心配置文件设置的类的别名-
集合属性='roleList' ofType='role '
身份证明(identification)列='roleId '属性='id'/id
结果列='roleName '属性=' roleName '/结果
结果列='roleDesc '属性=' RoleDesc '/结果
/收藏
/resultMap
选择结果映射='用户角色映射'
选择*来自用户,系统用户角色,系统角色其中u.id=ur.userId和ur.roleId=r.id
/select
4)测试结果
@测试
public void test3()引发IOException {
InputStream资源assstream=resources。get resource as stream(' sqlmapconfig。XML ');
Sqlsessionfactory Sqlsessionfactory=new Sqlsessionfactory builder().构建(资源流);
SqL会话SqL会话=SqL会话工厂。OpenSession();
用户映射程序=SqL会话。GetMapper(用户映射器。类);
列表用户usernandleall=mapper。findsusernandall();
适用于(用户用户:用户和实验室){ 0
System.out.println(用户);
}
sqlsesession。close();
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149514.html