[java] view plain copy 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 + "]"; } }
[java] view plain copy 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 + "]"; } }
[java] view plain copy 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); }
[html] view plain copy <?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" [html] view plain copy <span style="white-space:pre"> </span>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>
要注册二份,一份是xml的一份是注解接口的
[html] view plain copy <mapper class="cn.et.mybatis.lesson03.manyToOne.EmpMapper"/> <mapper resource="cn/et/mybatis/lesson03/manyToOne/many_mapper.xml"/>
[java] view plain copy 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); } }