Mybaities多对一注解和xml的实现

Dept实体类:

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实体类:

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:

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:

<?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" 
		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的一份是注解接口的

  	<mapper class="cn.et.mybatis.lesson03.manyToOne.EmpMapper"/>
  	<mapper resource="cn/et/mybatis/lesson03/manyToOne/many_mapper.xml"/>


测试类:

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

}










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值