Dept实体类:
- 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实体类:
- 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的
- 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:
- <?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:
注解的
- 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);
- }
测试类:
- 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);
- }
- }
- }