mybatis学习:八

来源:互联网 发布:网络公司简介怎么写 编辑:程序博客网 时间:2024/05/19 16:06

一对一关联查询
首先创建实体bean

public class Classes {    private int id;    private String name;    private Teacher teacher;    public Classes() {        super();    }    public Classes(int id, String name, Teacher teacher) {        super();        this.id = id;        this.name = name;        this.teacher = teacher;    }    @Override    public String toString() {        return "Classes [id=" + id + ", name=" + name + ", teacher=" + teacher + "]";    }    public void setId(int id) {        this.id = id;    }    public int getId() {        return id;    }    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }    public Teacher getTeacher() {        return teacher;    }    public void setTeacher(Teacher teacher) {        this.teacher = teacher;    }}
public class Teacher{    private int id;    private String name;    public Teacher(){        super();    }    public Teacher(int id,String name){        super();        this.id = id;        this.name = name;    }    @Override    public String toString(){        return "Teacher [id=" + id + ", name=" + name + "]";    }    public void setId(int id){        this.id = id;    }    public int getId(){        return id;    }    public void setName(String name){        this.name = name;    }    public String getName(){        return name;    }}

创建接口

public interface IClassesDao {    /**     * 使用表连接查询     * @param id     * @return     */    public Classes selectClasses1(int id);    /**     * 使用子查询     * @param id     * @return     */    public Classes selectClasses2(int id);}

编写配置文件

<mapper namespace="com.han.mybatis.dao.IClassesDao">    <!-- 注意连接查询中列名不能重复,若重复则需要重命名列名 -->      <select id="selectClasses1" resultMap="ClassResultMap">        select c.id,c.name,t.id tid,t.name tname from Classes c ,teacher t where teacherid=t.id and c.id = #{id}    </select>    <resultMap type="Classes" id="ClassResultMap">        <id column="id" property="id"/>        <result column="name" property="name"/>        <association property="teacher" javaType="Teacher">            <id column="tid" property="id"/>            <result column="tname" property="name"/>        </association>    </resultMap>    <!-- 正常查询,resultMap设置为定义的resultMap -->    <select id="selectClasses2" resultMap="ClassResultMap2">         select * from classes where id=#{id}    </select>    <resultMap type="Classes" id="ClassResultMap2">        <id column="id" property="id"/>        <result column="name" property="name"/>        <association property="teacher" column="teacherid" select="getTeacher"></association>    </resultMap>    <select id="getTeacher" parameterType="int" resultType="teacher">        select * from teacher where id = #{id}    </select></mapper>

测试结果

    @Test    public void selectClasses1Test(){        SqlSession sqlSession = MyBatisUtil.openSqlSession();        IClassesDao classesDao = sqlSession.getMapper(IClassesDao.class);        Classes cs = classesDao.selectClasses1(1);        System.out.println(cs);    }    @Test    public void selectClasses2Test(){        SqlSession sqlSession = MyBatisUtil.openSqlSession();        IClassesDao classesDao = sqlSession.getMapper(IClassesDao.class);        Classes cs = classesDao.selectClasses2(1);        System.out.println(cs);    }
原创粉丝点击