天天看點

mybatis中關聯查詢一些細節

mybatis中關聯查詢一些細節

(1) resultMap(将一個pojo封裝到另一個pojo)

resultMap是Mybatis最強大的元素,它可以将查詢到的複雜資料(比如查詢到幾個表中資料)映射到一個結果集當中。
resultMap用法
<!--column不做限制,可以為任意表的字段,而property須為type 定義的pojo屬性-->
<resultMap id="唯一的辨別" type="映射的pojo對象">
  <id column="表的主鍵字段,或者可以為查詢語句中的别名字段" jdbcType="字段類型" property="映射pojo對象的主鍵屬性" />
  <result column="表的一個字段(可以為任意表的一個字段)" jdbcType="字段類型" property="映射到pojo對象的一個屬性(須為type定義的pojo對象中的一個屬性)"/>
  <association property="pojo的一個對象屬性" javaType="pojo關聯的pojo對象">
    <id column="關聯pojo對象對應表的主鍵字段" jdbcType="字段類型" property="關聯pojo對象的主席屬性"/>
    <result  column="任意表的字段" jdbcType="字段類型" property="關聯pojo對象的屬性"/>
  </association>
  <!-- 集合中的property須為oftype定義的pojo對象的屬性-->
  <collection property="pojo的集合屬性" ofType="集合中的pojo對象">
    <id column="集合中pojo對象對應的表的主鍵字段" jdbcType="字段類型" property="集合中pojo對象的主鍵屬性" />
    <result column="可以為任意表的字段" jdbcType="字段類型" property="集合中的pojo對象的屬性" />  
  </collection>
</resultMap>
           
pojo
public class DepartmentExample  {
    private String dept_num;
    private String dept_name;
    private Faculty faculty;
    private String tip;
           
<resultMap id="department_faculty_map" type="com.ladybird.hkd.model.example.DepartmentExample">
        <id column="dept_num" property="dept_num"/>
        <result column="dept_name" property="dept_name"/>
        <result column="tip" property="tip"/>
        <association property="faculty" javaType="com.ladybird.hkd.model.pojo.Faculty">
            <id property="fac_num" column="fac_num"/>
        </association>
    </resultMap>
           
<select id="selectAllDept" parameterType="com.ladybird.hkd.model.pojo.Faculty" resultMap="department_faculty_map">
        SELECT
		  d.dept_num,
		  d.dept_name,
		  d.tip,
		  f.fac_num
		FROM department d
		LEFT JOIN faculty f
		ON d.faculty = #{fac_num}
    </select>
           

成功

mybatis中關聯查詢一些細節

注:resultMap中的标簽傳回的是對象,如果隻想取faculty中被關聯的主鍵怎麼辦

(2)隻取表中的一列資料

public class Department {
    private String dept_num;
    private String dept_name;
    private String faculty;
    private String tip;

           
<select id="selectAllDept" parameterType="com.ladybird.hkd.model.pojo.Faculty" resultType="com.ladybird.hkd.model.pojo.Department">
        SELECT
		  d.dept_num,
		  d.dept_name,
		  d.tip,
		  f.fac_num
		FROM department d
		LEFT JOIN faculty f
		ON d.faculty = #{fac_num}
    </select>
           

成功

mybatis中關聯查詢一些細節

繼續閱讀