MyBatis对多关系:显示该用户的所有角色
只要在一边的UserMapper.xml 配置好就可以了
<?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="mybatis.UserMapper">
<!--为返回的结果集和pojo属性,做对应关系 -->
<!--MyBatis中与hibernate不同的orm的地方,mybatis是返回的结果集映射到pojo中的属性,而不是在建立表的时候映射-->
<resultMap type="com.free.mybatis.domain.User" id="qwe">
<!--所以他需要column来定位具体的属性 -->
<id property="uid" column="UID"/>
<result property="user_name" column="USER_NAME"/>
<!--下面是根据sql返回的结果集依次设置到pojo,不写则无值-->
<!-- <result property="user_password" column="USER_PASSWORD"/>-->
<!-- <result property="user_desc" column="USER_DESC"/>-->
<!-- <result property="e_mail" column="E_MAIL"/>-->
<!-- <result property="phone" column="PHONE"/>-->
<!-- 配置关联(应该采用extends的方式) --> </resultMap> <resultMap type="com.free.mybatis.domain.User" id="rolemapper" extends="qwe">
<!--对多关系 collection -->
<!--对一关系 association-->
<collection property="roles" ofType="com.free.mybatis.domain.Role">
<id property="rid" column="RID"/>
<result property="name" column="NAME"/>
<result property="pid" column="PID"/>
<result property="isParent" column="ISPARENT"/>
<result property="checked" column="CHECKED"/>
</collection>
</resultMap> <select id="findUserRole" parameterType="map" resultMap="rolemapper">
SELECT u.*,r.*
FROM USER u
LEFT JOIN user_role ur
ON u.uid = ur.uid
LEFT JOIN role r
ON ur.rid = r.rid
<where>
<if test="username!=null">u.user_name=#{username}</if>
</where>
</select>
</mapper>
package com.free.mybatis.test; import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test; import com.free.mybatis.domain.Role;
import com.free.mybatis.domain.User;
@SuppressWarnings(value = { "unused" })
public class testDemo1 {
@Test
public void test1() throws IOException {
String resource="sqlMapConfig.xml";
// InputStream is = testDemo1.class.getClassLoader().getResourceAsStream(resource);
// resource.get
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory sfb = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sfb.openSession();
Map<String,Object> map = new HashMap<String,Object>();
// map.put("username", "')
// new HashMap<>();
// map.put("username", "freedom");
List<User> list = sqlSession.selectList("mybatis.UserMapper.findUserRole", map);
for(User user : list) {
// System.out.println(user.getRoles());
System.out.println(user.toString());
// for(Role roles :user.getRoles())
// System.out.println(user.getUser_name()+":"+roles.getName());
}
// sqlSession.commit();
// System.out.println(list);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>
<!--datasource和transaction -->
<!--test/development-->
<environments default="test">
<!--可以有多个环境,测试和部署 -->
<environment id="test" >
<!-- 事务:JDBC/MANAGED jdbc默认事务部自动提交-->
<transactionManager type="JDBC">
</transactionManager>
<!-- 数据源:POOLED/UNPOOLED/JNDI -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/gyl" />
<property name="username" value="root" />
<property name="password" value="freedom2012" />
</dataSource>
</environment> <environment id="test" >
<!-- 事务:JDBC/MANAGED jdbc默认事务部自动提交-->
<transactionManager type="JDBC">
</transactionManager>
<!-- 数据源:POOLED/UNPOOLED/JNDI -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/gyl" />
<property name="username" value="root" />
<property name="password" value="freedom2012" />
</dataSource>
</environment>
</environments> <mappers>
<!--加载domain的映射 -->
<mapper resource="mybatis/UserMapper.xml"/>
</mappers>
</configuration>
MyBatis对多关系:显示该用户的所有角色的更多相关文章
- Android基于mAppWidget实现手绘地图(十二)–显示当前用户位置
若显示当前用户位置,你需要执行以下步骤: 1.添加ACCESS_COARSE_LOCATION 和ACCESS_FINE_LOCATION权限在AndroidManifest.xml中 2.用mapW ...
- 显示当前用户所拥有的表&当前用户可以访问的所有表&数据库中的所有表&当前用户信息&当前用户所能管理的用户&数据库中所拥有的用户
1)显示当前用户名称:show user或者show user; 2)显示当前用户信息(包括用户名之外还有其他信息):select * from user_users; 3)显示数据库中所含有的所有用 ...
- 在Mysql中如何显示所有用户?
这是一个mysql初学者经常问到的一个问题,今天我们就带大家看看是如何在Mysql中显示所有用户的.通常我们在mysql中使用SHOW DATABASES可以显示所有的数据库,SHOW TABLES将 ...
- Linux命令之env:显示当前用户的环境变量
Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令.下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的 ...
- Linux基础命令---显示登录用户w
w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...
- Linux命令应用大词典-第14章 显示登录用户
14.1 w:详细查询已登录当前计算机的用户 14.2 who:显示已登录当前计算机用户的简单信息 14.3 whoami:显示与当前的有效ID相关联的用户名 14.4 logname:显示当前用户的 ...
- MSSQL2005数据库显示单一用户模式,无法进行任何操作
MSSQL2005数据库显示单一用户模式,无法进行任何操作 经查询,使用exec sp_who进行查看链接线程,发现仍然有链接不断进行请求,将链接踢出,然后通过命令修复即可恢复 处理步骤: exec ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_11-前端显示当前用户-前端请求jwt
前端代码 sessionStorage也是key/value的格式 页头显示当前用户 查询jwt nginx里面的配置 测试 开启认证服务 进行登陆 跳转到首页就应该立即请求查询. 跳转到首页 coo ...
- 项目一:第十三天 1、菜单数据管理 2、权限数据管理 3、角色数据管理 4、用户数据管理 5、在realm中动态查询用户权限,角色 6、Shiro中整合ehcache缓存权限数据
1 课程计划 菜单数据管理 权限数据管理 角色数据管理 用户数据管理 在realm中动态查询用户权限,角色 Shiro中整合ehcache缓存权限数据 2 菜单数据添加 2.1 使用c ...
随机推荐
- 解析库之re、beautifulsoup、pyquery
BeatifulSoup模块 一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Be ...
- C# ---sender
在某个方法中: 第一种写法: private void btn4_Click_1(object sender, RoutedEventArgs e) { btn1_Click(null, null); ...
- jQuery动画二级下拉菜单
在线演示 本地下载
- 20145217《网络对抗》 MAL_简单后门学习总结
20145217<网络对抗> MAL_简单后门学习总结 实践内容: 1.netcat的应用 2.socat的应用 3.meterpreter的应用 知识点学习总结 后门程序一般是指那些绕过 ...
- 在react-native中使用redux
redux是什么? redux是一个用于管理js应用状态的容器.redux出现时间并不是很长,在它出现之前也有类似功能的模块出现,诸如flux等等.redux设计的理念很简单,似乎最初这个开发团队就有 ...
- Action Results in Web API 2
https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/action- ...
- MySQL 触发器简单实例 - 转载
MySQL 触发器简单实例 触发器:可以更新,删除,插入触发器,不同种类的触发器可以存在于同一个表,但同种类的不能有多个.一个更新.一个删除是可以共存的. ~~语法~~ CREATE TRIGGER ...
- 关于eclipse中看不到源码的问题
这几步之后会生成一个src压缩包,再用att打开即可.记住 要按ctrl再点击
- 卸载oracle11g
完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务.2. 开始->程序->Oracle - OraHome ...
- Java 文件上传中转
org.apache.commons.httpclient.methods.multipart Class MultipartRequestEntity java.lang.Object org.ap ...