您的位置:首页 > 其它

mybatis学习:八

2017-06-01 15:31 134 查看
一对一关联查询

首先创建实体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"/>

a9a5
<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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis