嗯, 重新开始吧.
在看mybatis的书, 把mybatis再恶补一下吧, 毕竟这个是纯软, 家里还没收拾完, 纯软容易搞一点.
1 <select id="selectRolesByUserAndRole" resultType="marc.mybatis.lesson1.model.SysRole"> 2 select 3 r.id,r.role_name roleName,r.enabled,r.create_by 4 createBy,r.create_time 5 createTime, 6 u.user_name as "user.userName", 7 u.id as "user.Id" 8 from 9 sys_user u inner join 10 sys_user_role ur on u.id=ur.user_id inner join 11 sys_role r on 12 ur.role_id=r.id 13 where u.id=#{user.id} and 14 r.enabled=#{role.enabled} 15 </select>
这里有两个知识点, 一个是把user.id,role.enabled这两个值当输入参数的时候, 如果传入的直接是两个类, 或曰对象, 可以这么写, 直接在mapper类里面传入类即可:
1 List<SysRole> selectRolesByUserAndRole(@Param("user") SysUser user, @Param("role") SysRole role);
另一个就是把结果拼成一个对象输出的时候, 如果打个比方, 如果role里面含有一个user对象, 就用u.user_name as "user.userName", 输出的时候就可以直接找到内含的这个user对象了:
SysRole [id=1, rolename=管理员, enabled=1, createby=1, createtime=Sat Dec 09 12:22:12 CST 2017, user=SysUser [id=1, userName=admin, userPassword=null, userEmail=null, userInfo=null, headImg=null, createTime=null]]
最后要注意的就是两次左连接, 相当于子查询, 可以构建多对多的表关系, 这个东西以前没搞过, 搞用户自定义图片的时候, 我居然用的9个键值, sb......估计卓越看了我的库, 想骂我...
多对多的关系, 估计还得多练习....