MyBatis 一对多查询

一、创建数据库 SQL

CREATE TABLE user (id INT, username VARCHAR(20), phone VARCHAR(20));
CREATE TABLE orderinfo (orderid INT, uid INT, goods VARCHAR(20), info VARCHAR(50));

注意:一对多查询,两个表的主键名不能一致,否则查询时,多的一方只能查出一条数据。

二、创建与数据库表对应的实体类

public class OrderInfo implements Serializable {

    private int orderid;
    private int uid;
    private String goods;
    private String info;
	...
}
public class User implements Serializable {

    private int id;
    private String username;
    private String phone;
    private List<OrderInfo> orderInfoList;
	...
}

三、持久层接口

List<User> findAll();

四、持久层接口映射文件

<resultMap id="userMap" type="chu.yi.bo.domain.User">
    <id column="id" property="id"/>
    <result column="username" property="username"/>
    <result column="phone" property="phone"/>
    <collection property="orderInfoList" ofType="chu.yi.bo.domain.OrderInfo">
        <id column="orderid" property="orderid"/>
        <result column="uid" property="uid"/>
        <result column="goods" property="goods"/>
        <result column="info" property="info"/>
    </collection>
</resultMap>
<!-- 配置查询所有操作 -->
<select id="findAll" resultMap="userMap">
    select u.*,o.* from user u left outer join orderinfo o on u.id = o.uid;
</select>

五、测试

List<User> users = userDao.findAll();
for(User user : users) {
    System.out.println(user);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值