閱讀646 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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 >
    <![CDATA[
        select ID,NAME,CLASS_ID
        from tbl_Student
    ]]>
</sql>

<resultMap >
    <result property="id" column="ID" />
    <result property="name" column="NAME" />
    <result property="class_id" column="CLASS_ID" />
</resultMap>

<select parameterClass="java.util.Map" resultMap="StudentMap">
    <include ref />
</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 >
    <result property="id" column="ID" />
    <result property="name" column="NAME" />
    <result property="class_id" column="CLASS_ID" />
    <result property="class_name" column="CLASS_NAME" />
</resultMap>

<sql >
    <![CDATA[
        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
    ]]>
</sql>

<select parameterClass="java.util.Map" resultMap="StudentDtoMap">
    <include ref />
</select>

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



最後更新:2017-04-03 16:49:27

  上一篇:go 關於ORACLE時間存儲的問題
  下一篇:go Oracle操作報錯:record is locked by another user