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 ...
随机推荐
- m2eclipse插件——添加依赖不显示搜索结果
使用Eclipse,安装m2eclipse插件之后,选中Maven项目的pom文件,添加依赖,点击“Add Dependency”的时候,输入要检索的jar包名称,search result却一直为空 ...
- how to get a controller instance in another controller
https://stackoverflow.com/questions/16870413/how-to-call-another-controller-action-from-a-controller ...
- Effective C++ 条款04:确定对象被使用前已经先被初始化
规则一 永远在使用对象之前将它初始化 int x = 0; const char* text = "A C-style string"; double d; std:: cin & ...
- 选择使用Spring框架的原因(Spring框架为企业级开发带来的好处有哪些)
- openlayers2地图控件扩展:要素删除DeleteFeature
实现要素删除控件,扩展OpenLayers.Control类,实现效果:选择DeleteFeature工具后,选择要素,按delete键删除要素(这里的删除只是将feature设置成delete状态, ...
- Windows下搭建Apache+Django+Python Web服务环境
最近在学Django,想用Apache搭建一个服务器环境,因此在网上看了好多资料,很多都是用Python2.6和Apache2.2搭建的环境,不过我还是想用Python35和Apache24来搭建,具 ...
- TUNING FOR ALL FLASH DEPLOYMENTS
Ceph Tuning and Best Practices for All Flash Intel® Xeon® ServersLast updated: January 2017 TABLE OF ...
- 带你彻底明白 Android Studio 打包混淆
前言 在使用Android Studio混淆打包时,该IDE自身集成了Java语言的ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单.只需要在工程应用目录的gradle文件 ...
- 报错Mapped Statements collection does not contain value for com.atguigu.mybatis.dao.EmployeeMapperPlus
报错Mapped Statements collection does not contain value for com.atguigu.mybatis.dao.EmployeeMapperPlus ...
- Eclipse和MyEclipse的区别
翻译:日食,月食. eclipse是免费的,myeclipse是收费的. myeclipse是eclipse的插件.