MyBatis对象关系映射--- 多对一

来源:互联网 发布:华美卷皮最新源码 编辑:程序博客网 时间:2024/06/04 18:28

实体类:

package cn.et.lesson03.emp;import cn.et.lesson03.dept.Dept;public class Emp {/** * 对象关系映射 * 举例:一个部门中有过个员工 * 那么查询唯一的一个员工时,部门信息是确定的 * (即多对一的关系) * Emp中添加Dept来体现 */private String empId;private String empName;//部门对象private Dept dept;public String getEmpId() {return empId;}public void setEmpId(String empId) {this.empId = empId;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public Dept getDept() {return dept;}public void setDept(Dept dept) {this.dept = dept;}@Overridepublic String toString() {return "Emp [empId=" + empId + ", empName=" + empName + ", dept="+ dept + "]";}}

接口:

package cn.et.lesson03.emp;import org.apache.ibatis.annotations.One;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import cn.et.lesson03.dept.Dept;public interface EmpMapper {/** * 将列名和字段名 建立关系 * property指向 java中的实体类字段   区分大小写 * column指向 数据库中的 列名不分区大小写 * @param empNo * @return *  *    <!-- emp中多对一使用xml演示 -->  <resultMap type="cn.et.mybatis.lesson03.result.anno.Emp" id="myEmp">  <result column="empNo" property="empId"/>  <association property="dept" select="selectMyDept" column="deptno" javaType="cn.et.mybatis.lesson03.result.xml.Dept">  </association>  </resultMap> *  *  */@Results({@Result(column="empno",property="empId"),@Result(column="ename",property="empName"),/*noe是Mybatis中 多对一 的关键字 * @One指向  一 的查询语句 * 这里的column 是将selectEmpByEmpNo查询出来的deptno传入到selectDeptByDeptNO * javaType 申明 one=@One查询出来的 结果类型 * property="dept" 将结果 存入dept*/@Result(column="deptno",property="dept", javaType=Dept.class, one=@One(select="cn.et.lesson03.emp.EmpMapper.selectDeptByDeptNO"))})@Select("select empno,ename,deptno from emp where empno=#{0}")public Emp selectEmpByEmpNo(String empNo);@Results({@Result(column="deptNo",property="deptId"),@Result(column="dname",property="deptName"),@Result(column="loc" , property="deptLoc"),})@Select("select * from dept where deptno=#{0}")public Dept selectDeptByDeptNO(String deptNo);}


Test

package cn.et.lesson03.emp;import java.io.InputStream;import java.util.List;import java.util.Map;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class TestMybatis {private static SqlSession getSession() {//因为需要的mybatis.xml文件 不在同一层目录  所以这里才使用 cn.et.lesson01.TestMybatisInputStream is = TestMybatis.class.getResourceAsStream("/cn/et/lesson03/mybatis.xml");SqlSessionFactory session = new SqlSessionFactoryBuilder().build(is);//openSession()获取操作数据库的类 SqlSessionSqlSession sqlSession = session.openSession();return sqlSession;}public static void main(String[] args) {SqlSession sqlSession = getSession();//通过动态代理创建一个实体类    通过接口会自动调用配置文件EmpMapper dm = sqlSession.getMapper(EmpMapper.class);Emp emp = dm.selectEmpByEmpNo("7900");System.out.println(emp);}}


Run


原创粉丝点击