天天看點

ibatis多表查詢

我們先來看看這兩張表

表名:tbl_student

字段:id,name,class_id

表名:tbl_class

字段:id,name

很簡單的一個邏輯,班級下邊有很多學生。我們先對學生表做簡單的查詢。

model

public class student

{

    private string id;

    private string name;

    private stirng birth;

    private string class_id;

    .......................

}

studentmapper.xml

<typealias alias="studentclass" type="model.student"></typealias>

<sql id="select">

    <![cdata[

        select id,name,class_id

        from tbl_student

    ]]>

</sql>

<resultmap id="studentmap" class="studentclass">

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

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

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

</resultmap>

<select id="selectall" parameterclass="java.util.map" resultmap="studentmap">

    <include refid="select" />

</select>

但是我想加入班級名稱在裡面呢?這個時候student就不夠用了,我們需要用dto了。

dto

public class studentdto

     private string id;

     private string name;

     private stirng birth;

     private string class_id;

     private string class_name;

     ......................

在原有的studentmapper.xml檔案中加入一下内容:

<typealias alias="studentdtoclass" type="dto.studentdto"></typealias>

<resultmap id="studentdtomap" class="studentdtoclass">

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

<sql id="select2">

        select s.id as id,s.name as name,s.class_id as class_id,c.name as class_name

        from tbl_student s,tbl_class c 

        where s.class_id = c.id

<select id="selectall2" parameterclass="java.util.map" resultmap="studentdtomap">

    <include refid="select2" />

一定要注意寫as後面的值,這樣才能一一對應起來,否則會報錯:未指定的列。