【java框架】查询数据方法: ①关联查询 ②嵌套查询

本文介绍了MyBatis中如何进行嵌套查询和关联查询,通过XML映射文件展示了查询用户、部门和角色的示例。重点讲解了如何使用resultMap配置来实现复杂查询结果的映射,包括用户与部门、用户与角色的关联数据获取。同时,提供了查询普通管理员及其部门和角色的SQL示例。
摘要由CSDN通过智能技术生成
<?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">
<!--sql映射文件  namespace名字必须与接口的类路径一致-->
<mapper namespace="com.ffyc.ssmback.dao.UserDao">

<!--
    查询数据库数值:
        1、关联查询所有数据
        2、 mybatis中的嵌套查询 分开查询
-->
<!--    <select id="list" resultType="user">
        SELECT * FROM USER  u LEFT JOIN dept d ON u.deptid = d.id
	              LEFT JOIN user_role ur ON u.id = ur.userid
	              LEFT JOIN ROLE r ON ur.roleid = r.id*/
    </select>-->

    <resultMap id="userMap" type="User">
        <id column="id" property="id"></id>
        <result column="account" property="account"></result>
        <result column="gender" property="gender"></result>
        <result column="phone" property="phone"></result>
        <!--查询用户关联的部门-->
        <association property="dept" column="deptid" select="finddepts"></association>
        <!--查询用户分配的角色                                         cloumn="id" 为用户的id-->
        <collection property="roles" javaType="list" ofType="Role" column="id" select="findRole"></collection>
    </resultMap>
    <select id="list" resultMap="userMap">
        SELECT id,account,gender,pho`user`ne,deptid FROM USER WHERE TYPE=1
    </select>
    <select id="finddepts" parameterType="int" resultType="Dept">
        SELECT NAME FROM dept WHERE id=#{id}
    </select>
    <select id="findRole" parameterType="int" resultType="Role">
        SELECT r.name FROM user_role ur LEFT JOIN ROLE r ON ur.roleid = r.id WHERE ur.userid = #{id}
    </select>
</mapper>
-- 1、关联查询所有数据   

-- 2、 mybatis中的嵌套查询 分开查询  后面讲分页功能

-- 查询用户表 关联部门表、用户_角色表、角色表   
SELECT * FROM USER  u LEFT JOIN dept d ON u.deptid = d.id
	              LEFT JOIN user_role ur ON u.id = ur.userid
	              LEFT JOIN ROLE r ON ur.roleid = r.id
	              
-- 只查询普通管理员,
SELECT id,account,gender,pho`user`ne,deptid FROM USER WHERE TYPE=1
-- 查询用户所关联的部门
SELECT NAME FROM dept WHERE id=2
-- 查询用户2所分配的角色名字    
SELECT r.name FROM user_role ur LEFT JOIN ROLE r ON ur.roleid = r.id WHERE ur.userid = 2
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值