MyBitis(iBitis)系列隨筆之四:多表(多對一查詢操作)
阿新 • • 發佈:2019-02-20
前面幾篇部落格介紹的都是單表對映的一些操作,然而在我們的實際專案中往往是用到多表對映。至於多表對映的關鍵要用到mybitis的association來加以實現。
這篇介紹的是多表中的多對一表關聯查詢
先做一些準備工作
建立兩張表:一張是使用者,一張是使用者所對應的移動手機,一戶使用者可以有部移動手機。
這是使用者t_user表
這是行動電話t_mobile表
建立表對應的JavaBean物件
User物件
package com.jefry; public class User { private int id; private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
Mobile物件:
package com.jefry; public class Mobile { private int id; private String telnumber; private User user; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTelnumber() { return telnumber; } public void setTelnumber(String telnumber) { this.telnumber = telnumber; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
修改configure檔案物件別名:
<typeAliases>
<typeAlias alias="User" type="com.jefry.User"/>
<typeAlias alias="Mobile" type="com.jefry.Mobile"/>
</typeAliases>
修改表對映檔案
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="mobile"> <resultMap id="userResultMap" type="Mobile"> <id property="id" column="id"/> <result property="telnumber" column="telnumber"/> <association property="user" javaType="User"> <id property="id" column="id"/> <result property="userName" column="name"/> <result property="password" column="pass"/> </association> </resultMap> <!--多表查詢操作--> <select id="selectMobile" parameterType="int" resultMap="userResultMap" > <!--分別為mobile的主鍵id與user的主鍵id賦值別名,避免因為兩個表字段名稱相同而注入到對應物件名稱衝突--> select m.id m_id,m.telnumber,u.id u_id,u.name,u.pass from t_mobile m,t_user u where m.userid = u.id and m.id = #{id} </select> </mapper>
ok完成了,執行結果如下: