第一节(接口绑定) |
什么是接口绑定 |
了解 |
|
要遵循的规范 |
掌握 |
|
参数传递问题 |
掌握 |
- 什么是接口绑定
- 接口绑定, 是MyBatis中提供的一种比较灵活的数据库操作方案. 用于解决方法调用不灵活, 参数传递不灵活的问题. 通过接口绑定, 还可以像之前使用dao一样去使用MyBatis.
- 和dao不同的是, 在MyBatis的接口绑定实现过程中, 程序员只需要提供接口, 不需要提供实现类. 但是, 需要提供与接口匹配的映射配置文件. 前提是程序员需要遵循特定的规范.
- 使用接口绑定后, 可以简化方法的调用和参数的传递.
2.实现接口绑定需要遵循的规范
- 必要规范: 必须遵循的规范
- 映射配置文件中, mapper的namespace属性必须和接口的全限定路径一致
- 操作数据库的标签的id属性必须和接口中对应方法的名称一致
- 可选规范: 选择遵循, 如果遵循, 还可以进一步简化(在核心配置文件中可以使用package标签进行映射文件的统一扫描)
- 映射文件的命名和接口命名一致
- 映射文件和接口放在同一个目录
3.接口绑定中获取接口类型对象的方式
SqlSession对象中提供了一个方法, 用于获取接口类型的对象, 叫: getMapper(接口的Class对象)
4.接口绑定方案中参数传递问题
- 可以传递简单类型, 和之前一样
- 可以传递Map集合, 只能通过key获取
- 可以传递POJO对象, 只能通过getter方法对应的属性获取
- 多值传递:
- 不使用注解, 可以通过param1, param2, ...或arg0, arg1, ...的方式获取
- 使用注解, 使用@Param注解, 由MyBatis将参数封装为Map集合, 可以通过key获取, 也可以通过param1, param2,...获取, 不能通过arg0, arg1,...方式获取.
- 代码实现
public interface UserMapper {
List<User> selAll();
User sel4Login(@Param("name") String username, @Param("pwd") String password);
User sel4Login2(Map<String, String> params);
}
<?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.bjsxt.mapper.UserMapper">
<select id="selAll" resultType="user">
select * from tb_user
</select>
<select id="sel4Login" resultType="user">
select * from tb_user where username=#{name} and password=#{pwd}
</select>
<select id="sel4Login2" resultType="user">
select * from tb_user where username=#{name} and password=#{pwd}
</select>
</mapper>
@Test
public void test1() {
SqlSession session = MyBatisUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.sel4Login("zhangsan", "123");
session.close();
}