Mybaities一对多注解和xml的实现

xiaoxiao2021-02-28  96

Dept实体类:

[java]  view plain  copy package cn.et.mybatis.lesson03.oneToMany;      import java.util.List;      // default package         /**   * Dept entity. @author MyEclipse Persistence Tools   */      public class Dept{          // Fields          private String deptno;       private String dname;       private String loc;       private List<Emp> empList;       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;       }       public List<Emp> getEmpList() {           return empList;       }       public void setEmpList(List<Emp> empList) {           this.empList = empList;       }       @Override       public String toString() {           return "Dept [deptno=" + deptno + ", dname=" + dname + ", empList="                   + empList + ", loc=" + loc + "]";       }                           }  

Emp实体类:

[java]  view plain  copy package cn.et.mybatis.lesson03.oneToMany;         /**   * 举例:   *      一个部门——多个员工   * 员工表和部门表的关系是多对一关系   *    * 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 + "]";       }             }  

DeptMapper: xml的

[java]  view plain  copy package cn.et.mybatis.lesson03.oneToMany;      import java.util.List;         public interface DeptMapper {              public Dept queryDept(String deptno);               public List<Emp> queryEmp(String deptno);                 }  

one_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.oneToMany.DeptMapper">              <!--            一对多可能会出现内存溢出的风险           设置属性fetchType="lazy"           fetchType="lazy"  需要加载cglib架包           这样一样只有能到第二种sql语句的时候才去加载,不用就不加载        -->       <resultMap type="cn.et.mybatis.lesson03.oneToMany.Dept" id="myDept">           <collection column="deptno" javaType="java.util.List" property="empList"            select="cn.et.mybatis.lesson03.oneToMany.DeptMapper.queryEmp"           fetchType="lazy"           ></collection>       </resultMap>              <select id="queryDept" resultMap="myDept">           select * from dept where deptno=#{0}       </select>                     <select id="queryEmp" resultType="cn.et.mybatis.lesson03.oneToMany.Emp">           select * from emp where deptno=#{0}       </select>          </mapper>  

DeptAnnoMapper: 注解的

[java]  view plain  copy package cn.et.mybatis.lesson03.oneToMany;      import java.util.List;      import org.apache.ibatis.annotations.Many;   import org.apache.ibatis.annotations.Result;   import org.apache.ibatis.annotations.Results;   import org.apache.ibatis.annotations.Select;   import org.apache.ibatis.mapping.FetchType;         public interface DeptAnnoMapper {                     @Results(               {                   @Result(column="deptno",property="empList",javaType=java.util.List.class,                       many=@Many(select="cn.et.mybatis.lesson03.oneToMany.DeptAnnoMapper.queryEmpAnno",fetchType=FetchType.LAZY)                     )               }       )       @Select("select * from dept where deptno=#{0}")       public Dept queryDeptAnno(String deptno);               @Select("select * from emp where deptno=#{0}")       public List<Emp> queryEmpAnno(String deptno);   }  

测试类:

[java]  view plain  copy package cn.et.mybatis.lesson03.oneToMany;      /**   * 多对一   */   import java.io.InputStream;   import java.util.List;      import org.apache.ibatis.session.SqlSession;   import org.apache.ibatis.session.SqlSessionFactory;   import org.apache.ibatis.session.SqlSessionFactoryBuilder;      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();          DeptMapper dept = session.getMapper(DeptMapper.class);                    Dept result = dept.queryDept("20");          System.out.println(result);      }*/                     public static void main(String[] args) {       SqlSession session = getSession();       DeptAnnoMapper dept = session.getMapper(DeptAnnoMapper.class);       Dept result = dept.queryDeptAnno("20");              List list = result.getEmpList();           for (Object object : list) {               System.out.println(object);           }       }      }  
转载请注明原文地址: https://www.6miu.com/read-56494.html

最新回复(0)