Dept实体类:
package cn.et.mybatis.lesson03.manyToOne;
// default package
/**
* Dept entity. @author MyEclipse Persistence Tools
*/
public class Dept{
// Fields
private String deptno;
private String dname;
private String loc;
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
@Override
public String toString() {
return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc
+ "]";
}
}
Emp实体类:
package cn.et.mybatis.lesson03.manyToOne;
/**
* 举例:
* 一个部门——多个员工
* 员工表和部门表的关系是多对一关系
*
* Emp中添加Dept对象
* @author Administrator
*
*/
public class Emp {
private String empNo;
private String ename;
private String sal;
private Dept dept;
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getSal() {
return sal;
}
public void setSal(String sal) {
this.sal = sal;
}
@Override
public String toString() {
return "Emp [dept=" + dept + ", empNo=" + empNo + ", ename=" + ename
+ ", sal=" + sal + "]";
}
}
EmpMapper:
package cn.et.mybatis.lesson03.manyToOne;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
public interface EmpMapper {
/**
* 注解多对一
* @param empno
* @return
*/
@Results(
{
@Result(column="deptno",property="dept",
javaType=Dept.class,
one=@One(select="cn.et.mybatis.lesson03.manyToOne.EmpMapper.queryDeptByDeptno"))
}
)
@Select("select * from emp where empno=#{0}")
public Emp queryEmp(String empno);
@Select("select * from dept where deptno=#{0}")
public Dept queryDeptByDeptno(String deptNo);
//==========================================================
public Emp queryEmpXml(String empno);
public Dept queryDeptByDeptnoXml(String deptNo);
}
many_mapper.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">
<!--
多对一xml
-->
<mapper namespace="cn.et.mybatis.lesson03.manyToOne.EmpMapper">
<resultMap type="cn.et.mybatis.lesson03.manyToOne.Emp" id="myEmp">
<association column="deptno" property="dept" select="cn.et.mybatis.lesson03.manyToOne.EmpMapper.queryDeptByDeptnoXml"
javaType="cn.et.mybatis.lesson03.manyToOne.Dept"></association>
</resultMap>
<select id="queryEmpXml" resultMap="myEmp">
select * from emp where empno=#{0}
</select>
<select id="queryDeptByDeptnoXml" resultType="cn.et.mybatis.lesson03.manyToOne.Dept">
select * from dept where deptno=#{0}
</select>
</mapper>
mybatis.xml
要注册二份,一份是xml的一份是注解接口的
<mapper class="cn.et.mybatis.lesson03.manyToOne.EmpMapper"/>
<mapper resource="cn/et/mybatis/lesson03/manyToOne/many_mapper.xml"/>
测试类:
package cn.et.mybatis.lesson03.manyToOne;
/**
* 多对一
*/
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class TestMybatis {
public static SqlSession getSession(){
String resource = "/cn/et/mybatis/lesson03/mybatis.xml";
InputStream inputStream = TestMybatis.class.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//打开会话
SqlSession session = sqlSessionFactory.openSession();
return session;
}
public static void main(String[] args) {
SqlSession session = getSession();
EmpMapper emp = session.getMapper(EmpMapper.class);
Emp result = emp.queryEmp("8000");
System.out.println(result);
}
@Test
public void test(){
SqlSession session = getSession();
EmpMapper emp = session.getMapper(EmpMapper.class);
Emp result = emp.queryEmpXml("8000");
System.out.println(result);
}
}