MyBatis中的SQL语句2

该文介绍了如何在MyBatis框架中进行多表查询,包括连接查询和子查询的方法。连接查询通过在同一个SQL语句中联接两个表来获取数据,而子查询则利用内部查询来获取结果。在结果映射中,详细展示了如何配置User类与Detail类的关联,以及处理集合类型的属性。
摘要由CSDN通过智能技术生成

MyBatis中的多表查询操作

连接查询

<!--  在mybatis—config中
    <typeAliases>
        <typeAlias type="com.zzb.pojo.User" alias="User"/>
    </typeAliases>
    定义com.zzb.pojo.User的别名为User,所以可以type="User"
-->
<!-- 连接查询 -->
    <resultMap id="userMap" type="User">
        <id column="user_id" property="userId"/>
        <result column="user_name" property="userName"/>
        <result column="user_pwd" property="userPwd"/>
        <result column="user_realname" property="userRealName"/>
        <result column="user_img" property="userImg"/>
        <result column="detail_id" property="detail.detailId"/>
        <result column="user_addr" property="detail.userAddr"/>
        <result column="user_tel" property="detail.userTel"/>
        <result column="user_desc" property="detail.userDesc"/>
    </resultMap>
    <select id="selectUser" resultMap="userMap">
        select user_id,user_name,user_pwd,user_realname,user_img,detail_id,user_addr,user_tel,user_desc
        from users u
        inner join details d
        on u.user_id=d.uid
        where user_name=#{userName} and user_pwd=#{userPwd}
    </select>

子查询

<!--  子查询  -->
    <resultMap id="userMap" type="User">
    <id column="user_id" property="userId"/>
    <result column="user_name" property="userName"/>
    <result column="user_pwd" property="userPwd"/>
    <result column="user_realname" property="userRealName"/>
    <result column="user_img" property="userImg"/>
    <association property="detail" select="com.zzb.dao.DetailDao.selectDetail" column="user_id"/>

    </resultMap>

    <select id="selectUser" resultMap="userMap">
        select user_id,user_name,user_pwd,user_realname,user_img
        from users
        where user_name=#{userName} and user_pwd=#{userPwd}
    </select>

当一个类中的属性是集合时,用连接查询要使用collection标签来说明

<!-- 连接查询 -->
    <resultMap id="classMap" type="Clazz">
        <id column="cid" property="classId"/>
        <result column="cname" property="className"/>
        <result column="cdesc" property="classDesc"/>
<!--   Clazz对象的stus属性是一个list集合,需要使用collection标签     -->
<!--   collection标签的ofType属性声明集合中元素的类型     -->
        <collection property="stus" ofType="Student">
            <result column="sid" property="stuId"/>
            <result column="sname" property="stuName"/>
            <result column="sage" property="stuAge"/>
        </collection>
    </resultMap>


    <select id="queryClass" resultMap="classMap">
        select cid,cname,cdesc,sid,sname,sage
        from classes c
        inner join students s
        on c.cid=s.scid
        where c.cid=#{classId}
    </select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值