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类
添加一个和集合,泛型为刚才添加的类

浙公网安备 33010602011771号