mybatis 多表关联查询 一对多

mybatis 一对多 查询

1'<'collection>标签

<'collection>标签是处理所关联对象是多个的(处理关联属性是集合时的关联关系)。
property:指定关联对象的属性
javaType:关联对象的类型(可以省略。默认为List 类型,如果集合是Set 类型时需要
94
配置并给定Set 的全名)
ofType:指定集合里存放的对象类型
select:执行一个新的查询
column:在新的查询中用哪个列的值作为查询条件

例子:
一个用户对应多个订单,根据用户ID查询该用户所有订单

1.创建订单表

点击查看代码
CREATE TABLE `orders` (
`orderid` int(11) NOT NULL AUTO_INCREMENT,
`orderprice` double DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`orderid`),
KEY `orders_fk` (`user_id`),
CONSTRAINT `orders_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.创建实体类

3.修改映射配置

点击查看代码
<!--    一对多-->
    <resultMap id="usersAndOrdersMapper" type="com.bjsxt.pojo.Users">
        <id property="userid" column="userid"></id>
        <result property="username" column="username"/>
        <result property="usersex" column="usersex"/>
<!--        property users 里面的属性      ofType  对应的类-->
        <collection property="orders" ofType="com.bjsxt.pojo.Orders">
            <id property="orderid" column="orderid"/>
            <result property="orderprice" column="orderprice"/>
        </collection>
    </resultMap>

4.sql语句

点击查看代码
<select id="selectUsersAndOrders" resultMap="usersAndOrdersMapper">
        SELECT * from users as u,orders as o where u.userid=o.user_id and u.userid = #{userid}
    </select>

5.修改users类
添加一个和集合,泛型为刚才添加的类

posted @ 2021-12-02 13:59  风的指引  阅读(127)  评论(0)    收藏  举报