Mybaities多对一注解和xml的实现

来源:互联网 发布:网络上写小说能赚钱吗 编辑:程序博客网 时间:2024/06/15 02:26

Dept实体类:

package cn.et.mybatis.lesson03.manyToOne;// default package/** * Dept entity. @author MyEclipse Persistence Tools */public class Dept{// Fieldsprivate 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;}@Overridepublic 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;}@Overridepublic 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);}@Testpublic void test(){SqlSession session = getSession();EmpMapper emp = session.getMapper(EmpMapper.class);Emp result = emp.queryEmpXml("8000");System.out.println(result);}}