MyBatis 一对一关联查询

时间:2023-03-09 13:24:55
MyBatis 一对一关联查询

xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="Class"> <!-- 1.联表查询SELECT * from class c ,teacher t where c.t_id = t.t_id and c.c_id=1 -->
<select id="getClass" parameterType="int" resultMap="getClassMap">
SELECT *
from class c ,teacher t where c.t_id = t.t_id and c.c_id=#{id}
</select>
<resultMap type="com.stone.bean.ClassT" id="getClassMap">
<id column="c_id" property="id" />
<result column="c_name" property="name" />
<association property="teacher" javaType="com.stone.bean.Teacher">
<id column="t_id" property="id" />
<result column="t_name" property="name" />
</association>
</resultMap>
<!-- 2.查询两次select * from class where c_id = 1 ; SELECT * from teacher where
t_id = 1 -->
<select id="getClass2" parameterType="int" resultMap="getClass2Map">
SELECT *
from class c where c.c_id=#{id}
</select>
<select id="getTeacher" parameterType="int" resultType="com.stone.bean.Teacher">
select
t_id id,t_name name
from teacher where t_id=#{id}
</select>
<resultMap type="com.stone.bean.ClassT" id="getClass2Map">
<id column="c_id" property="id" />
<result column="c_name" property="name" />
<association property="teacher" column="t_id" select="getTeacher"> </association>
</resultMap>
</mapper>

java Bean:

package com.stone.bean;

public class ClassT {

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

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

测试:

package com.stone.dao;

import org.apache.ibatis.session.SqlSession;

import com.stone.bean.ClassT;
import com.stone.db.DBAccess; public class DBDaoClass { public static void main(String[] args) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
String statement = "Class.getClass";
Object parameter = 1;
// 通过sqlSession执行SQL语句;
ClassT class1 = sqlSession.selectOne(statement, parameter);
System.out.println(class1);
System.out.println("=======================");
statement = "Class.getClass2";
ClassT class2 = sqlSession.selectOne(statement, parameter);
System.out.println(class2);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} }