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