Mybaities多对一注解和xml的实现

xiaoxiao2021-02-28  95

Dept实体类:

[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                   + "]";       }          }  

Emp实体类:

[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 + "]";       }             }  

EmpMapper:

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

many_mapper.xml:

[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>  

mybatis.xml  

要注册二份,一份是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);       }      }  
转载请注明原文地址: https://www.6miu.com/read-56864.html

最新回复(0)