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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章