MyBatis 映射器配置文件与映射器接口

前一篇文章( [MyBatis日记](2)MyBatis创建一个简单项目)中我们介绍了如何使用MyBatis创建一个简单的项目,我们已经看见了一些映射器配置文件中配置基本的映射语句,以及怎样使用SqlSession对象调用它们的例子。

1. 前景回顾

现在让我们看看在com.sjf.bean包中studnetMapper.xml配置文件内,如何配置id 为"getStudentByID"的SQL语句的:
<?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="com.sjf.bean.studentMapper">
<select id="getStudentByID" parameterType="int" resultType="com.sjf.bean.Student">
select * from Student where ID = #{ID}
</select>
</mapper>
我们通过下面代码调用getStudentByID映射的SQL语句:
package com.sjf.service;
 
import org.apache.ibatis.session.SqlSession;
 
import com.sjf.bean.MyBatisSqlSessionFactory;
import com.sjf.bean.Student;
 
/**
* Student服务类
* @author sjf0115
*
*/
public class StudentService {

/**
* 根据ID获取学生信息
* @return
*/
public Student getStudentByID(int ID){
SqlSession session = MyBatisSqlSessionFactory.getSqlSession();
try{

String statement = "com.sjf.bean.studentMapper.getStudentByID";
Student stu = session.selectOne(statement, ID);
return stu;
}
finally{
if(session != null){
session.close();
}//if
}//finally
}
}

我们可以通过字符串形式: 映射器(Mapper)的 namespace + 在文件内定义的语句 id 调用映射的SQL语句。在本例子中,namespace为com.sjf.bean.studentMapper 和 语句id 为 getStudentByID,所以调用字符串形式为:com.sjf.bean.studentMapper.getStudentByID。但是这种方式容易出错。我们需要检查映射器配置文件中的定义,来保证我们输入的参数类型和结果返回类型是有效的。

2. 映射器接口

我们对之前的结构略作了些调整:
StudentMapper.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">
<mapper namespace="com.sjf.mapper.StudentMapper">
<select id="getStudentByID" parameterType="int" resultType="com.sjf.bean.Student">
select * from Student where ID = #{ID}
</select>
</mapper>
我们把StudentMapper.xml放在com.sjf.mapper包下,相应的,namespace改为com.sjf.mapper.StudentMapper。
MyBatis通过使用 映射器Mapper接口提供了更好的调用映射语句的方法。一旦我们通过映射器配置文件配置了映射语句,我们可以创建一个完全对象的一个映射器接口, 接口名跟配置文件名相同接口所在的包名也跟配置文件所在包名完全一样(入StudentMapper.xml所在包名是com.sjf.mapper,对应的接口名就是com.sjf.mapper.StudentMapper.java)。 映射器接口中的方法也跟映射器配置文件中完全对应 :方法名为配置文件中id值,方法参数类型为parameterType对应值;方法返回值类型为returnType对应值
根据上面的StudentMapper.xml文件,我们可以创建一个映射器接口StudentMapper.java:
package com.sjf.mapper;
 
import com.sjf.bean.Student;
 
/**
* Student映射器接口
* @author sjf0115
*
*/
public interface StudentMapper {
/**
* 根据学生ID获取学生信息
* @param ID
* @return
*/
Student getStudentByID(int ID);
}

从上我们可以看出StudentMapper.xml中语句id,parameterType,returnType分别对应StudentMapper接口中的方法名,参数类型,返回值类型相对应。
从而我们使用映射器接口来安全的调用映射语句:
package com.sjf.service;
 
import org.apache.ibatis.session.SqlSession;
 
import com.sjf.bean.MyBatisSqlSessionFactory;
import com.sjf.bean.Student;
import com.sjf.mapper.StudentMapper;
 
/**
* Student服务类
* @author sjf0115
*
*/
public class StudentService {

/**
* 根据ID获取学生信息
* @return
*/
public Student getStudentByID(int ID){
SqlSession session = MyBatisSqlSessionFactory.getSqlSession();
try{

StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student stu = studentMapper.getStudentByID(ID);
return stu;
}
finally{
if(session != null){
session.close();
}//if
}//finally
}
}
如果映射器Mapper接口中的方法和XML中的银蛇语句不能匹配,会在运行期抛出一个异常。
参考:《Java Persistence with MyBatis 3》
下载: 点击打开链接
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@SmartSi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值