Mybatis一對一、一對多的查詢

User表

 

Account表

 

應用:想要實現打印account的時候同時打印user的信息

 

1. mybatis主配置文件填寫dao文件的映射

<mappers>

<package name="cn.timer.dao">

</package>

</mappers>

 

Dao目錄下是User以及Account在DAO層的接口

IAccountDao接口的方法爲    List<Account> findAll();

 

2. 設置IAccountDao.xml

sql語句返回的爲:user account.id account.uid 

需要使用自定義的ResultMap


<mapper namespace="cn.timer.dao.IAccountDao">

    <resultMap id="accountUserMap" type="cn.timer.domain.Account">

        // property 爲pojo類中的屬性 aid爲數據庫內的id,這裏的aid是select語句返回的aid
        <id property="id" column="aid"></id>

        <result property="uid" column="uid"></result>

        <result property="money" column="money"></result>
        
        //javatype用來提示封裝了哪個對象
        <association property="user" column="uid" javaType="cn.timer.domain.User">
            <id property="id" column="id"></id>
            <result column="username" property="username"></result>
            <result column="address" property="address"></result>
            <result column="sex" property="sex"></result>
            <result column="birthday" property="birthday"></result>
        </association>

    </resultMap>

    <select id="findAll" resultMap="accountUserMap">
        select u.*,a.id as aid ,a.uid from account a, user u where u.id = a.uid
    </select>



</mapper>

 

3.輸出

 

一對多的情況:

一個用戶擁有多個賬戶,輸出這個用戶的所有賬戶信息

 

1.配置resultmap

<mapper namespace="cn.timer.dao.IUserDao">

    <resultMap id="userAccountMap" type="cn.timer.domain.User">
        <id property="id" column="id"></id>
        <result column="username" property="username"></result>
        <result column="address" property="address"></result>
        <result column="sex" property="sex"></result>
        <result column="birthday" property="birthday"></result>
        <collection property="accounts" ofType="cn.timer.domain.Account">
            <id property="id" column="aid"></id>
            <result property="uid" column="uid"></result>
            <result property="money" column="money"></result>
        </collection>
    </resultMap>

    <select id="findAll" resultMap="userAccountMap">
        SELECT u.*, a.id as aid, a.uid as uid ,a.money as money FROM user u ,account a where u.id = a.uid
    </select>

    <select id="findById" parameterType="INT" resultType="cn.timer.domain.User">
        select * from user where id= #{uid}
    </select>

</mapper>

 

2.user實體中加入

private List<Account>accounts;
方法

 

3.輸出

發佈了23 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章