天天看点

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后面的值,这样才能一一对应起来,否则会报错:未指定的列。