MyBatis中的结果集映射---接口全注解

实体类:

package cn.et.lesson03;

public class Emp {
	
	private String empNo;
	
	private String ename;

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

	@Override
	public String toString() {
		return "Emp [empNo=" + empNo + ", ename=" + ename + "]";
	}

	
}


Mapper接口:

package cn.et.lesson03;

import org.apache.ibatis.annotations.Select;

public interface EmpMapper {
	
	@Select("select * from emp where empno=#{0}")
	public Emp selectEmpByEmpNo(String empNo);
	

}


Test类:

package cn.et.lesson03;

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.TestMybatis
		InputStream is = TestMybatis.class.getResourceAsStream("mybatis.xml");
		
		SqlSessionFactory session = new SqlSessionFactoryBuilder().build(is);
		//openSession()获取操作数据库的类 SqlSession
		SqlSession 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:



MuBatis中对象映射 不区分大小写  但是列名和实体类的字段名必须一致  才能自动填充,

而当实体类由别人提供的时候,可能会出现 字段名和数据库中列名不一致的情况,这时

秉承开闭原则,我们只能修改自己的代码去适配对方的代码,以下提供两种方式以供参考


一、通过数据库中 as 关键字制造 伪列名 与 字段名匹配

实体类:

package cn.et.lesson03;

public class Emp {
	
	private String empNo;
	
	private String ename1;

	public String getEmpNo() {
		return empNo;
	}

	public void setEmpNo(String empNo) {
		this.empNo = empNo;
	}

	public String getEname1() {
		return ename1;
	}

	public void setEname1(String ename1) {
		this.ename1 = ename1;
	}

	@Override
	public String toString() {
		return "Emp [empNo=" + empNo + ", ename1=" + ename1 + "]";
	}
	
}


接口:

package cn.et.lesson03;

import org.apache.ibatis.annotations.Select;

public interface EmpMapper {
	//通过 as 关键字生成伪列名与实体类中的字段名匹配
	@Select("select empno,ename as ename1 from emp where empno=#{0}")
	public Emp selectEmpByEmpNo(String empNo);
}

Run



二:通过 Results 将列名和字段名建立关系  →推荐方式

实体类:

package cn.et.lesson03;

public class Emp {
	
	private String empId;
	
	private String empName;

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

	@Override
	public String toString() {
		return "Emp [empId=" + empId + ", empName=" + empName + "]";
	}
}


接口:

package cn.et.lesson03;

import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

public interface EmpMapper {
	/**
	 * 将列名和字段名 建立关系
	 * property指向 java中的实体类字段   区分大小写
	 * column指向 数据库中的 列名不分区大小写
	 * @param empNo
	 * @return
	 */
	@Results({
		@Result(column="empno",property="empId"),
		@Result(column="ename",property="empName")
		
	})
	@Select("select * from emp where empno=#{0}")
	public Emp selectEmpByEmpNo(String empNo);
}

Run:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值