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"
- <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>
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);
- }
- }