一对一关联查询
首先创建实体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);
}