<?xml version="1.0" encoding="UTF-8" ?>
<!--
代表引入的约束。 引入的是dtd约束
引用约束有什么作用
规范了 该xml中标签的使用
你不能去自定义标签 只能使用人家定义好的标签
-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper 映射
UserMapper.xml 跟 UserMapper.java产生映射
映射内容写到 mapper标签里面
属性
namespace 当前xml与哪个个接口产生映射
-->
<mapper namespace="com.jilian.dao.UserMapper">
<!--
/**
* 查询所有用户信息
*/
List<User> selectAllUser();
我的想法就是在封装user同时 把user关联的扩展信息 也封装到user中
封装user同时 把这个用户的订单信息 封装到user中 List<Order> orders;
-->
<select id="selectAllUser" resultMap="userResultMapper">
SELECT * FROM t_user
</select>
<resultMap id="userResultMapper" type="user">
<!--基本信息封装-->
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="birthday" property="birthday"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
<!--
我还想去查询 每个用户对应的扩展信息
查询某个用户扩展信息
SELECT * FROM t_user_info WHERE user_id=1
-->
<!--一对一关系封装
property 就是要把查询出来的数据封装到user 的 那个属性中
select 子查询 用户扩展信息的数据 来源于那个查询语句
column 列名 那个列 作为条件
-->
<association property="userInfo" select="selectUserInfoById" column="id"></association>
<!--
在完成 用户信息查询之后 封装某个user的时候
需要关联查询出 该用户多个订单信息
一个用户对应多个订单信息
-->
<collection property="orders" select="selectOrdersByUserId" column="id"></collection>
</resultMap>
<!--
查询某个用户的扩展信息:SELECT * FROM t_user_info WHERE user_id=1
-->
<select id="selectUserInfoById" resultType="userInfo">
SELECT * FROM t_user_info WHERE user_id=#{id}
</select>
<!--
查询某个用户的订单信息:SELECT * FROM t_order WHERE user_id=1
-->
<select id="selectOrdersByUserId" resultType="order">
SELECT * FROM t_order WHERE user_id=#{id}
</select>
</mapper>
级联查询举例
最新推荐文章于 2023-02-18 20:39:42 发布