Mybatis配置一对多的关联关系(五)
问题:是查询一个部门中的员工?
一、web项目构架
二、lib文件的jar
三、配置大小配置和该工具类
1大配置mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 别名的定制 --> <typeAliases> <!-- 按类型名定制别名 --> <!-- <typeAlias type="cn.happy.entity.Student" alias="Student"/> --> <!-- 拿当前指定包下的简单类名作为别名 --> <package name="cn.happy.entity"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="T2"/> <property name="password" value="T2"/> </dataSource> </environment> </environments> <mappers> <mapper resource="cn/happy/dao/DeptDAO.xml" /> </mappers> </configuration>
2小配置
<?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"> <mapper namespace="cn.happy.dao.IDeptDAO"> <resultMap type="Dept" id="deptMapper"> <id property="deptno" column="deptno"/> <result property="deptname" column="deptname"/> <collection property="emps" ofType="Emp"> <id property="empno" column="empno"/> <result property="empname" column="empname"/> </collection> </resultMap> <!-- one2many --> <select id="getDeptById" resultMap="deptMapper"> select dept.deptno,deptname,empno,empname from dept,emp where dept.deptno=emp.deptno and dept.deptno=#{deptno} </select> </mapper>
3工具类
package cn.happy.util; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /** * 工具类 * @author Happy * */ public class MybatisUtil { private static String config="mybatis-config.xml"; static Reader reader; static{ try { reader= Resources.getResourceAsReader(config); } catch (IOException e) { e.printStackTrace(); } } private static SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); //提供一个可以获取到session的方法 public static SqlSession getSession() throws IOException{ System.out.println("22222"+factory); //弊病,就是工厂是 // 1.1 openSession到底做了什么 SqlSession session = factory.openSession(); System.out.println("3333"); return session; } }
四、配置实体类
1Emp
package cn.happy.entity; /** * 员工 * @author Administrator * */ public class Emp { private Integer empno; private String empname; private Integer empage; public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEmpname() { return empname; } public void setEmpname(String empname) { this.empname = empname; } public Integer getEmpage() { return empage; } public void setEmpage(Integer empage) { this.empage = empage; } }
2Dept
package cn.happy.entity; import java.util.HashSet; import java.util.Set; /** * 部门 * @author Administrator * */ public class Dept { private Integer deptno; private String deptname; //配置一对多的关系 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDeptname() { return deptname; } public void setDeptname(String deptname) { this.deptname = deptname; } }
五接口
package cn.happy.dao; import cn.happy.entity.Dept; public interface IDeptDAO { //根据部门编号查询该部门 public Dept getDeptById(Integer id); }
六测试
package cn.happy.test; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.junit.Before; import org.junit.Test; import cn.happy.dao.IDeptDAO; import cn.happy.entity.Dept; import cn.happy.util.MybatisUtil; public class MyTest { IDeptDAO dao; @Before public void initData() throws IOException{ SqlSession session = MybatisUtil.getSession(); dao = session.getMapper(IDeptDAO.class); } @Test public void getDeptById() throws IOException{ Dept dept = dao.getDeptById(2); System.out.println(dept); } }