第一節(接口綁定) | 什麼是接口綁定 | 了解 |
要遵循的規範 | 掌握 | |
參數傳遞問題 | 掌握 |
- 什麼是接口綁定
- 接口綁定, 是MyBatis中提供的一種比較靈活的資料庫操作方案. 用于解決方法調用不靈活, 參數傳遞不靈活的問題. 通過接口綁定, 還可以像之前使用dao一樣去使用MyBatis.
- 和dao不同的是, 在MyBatis的接口綁定實作過程中, 程式員隻需要提供接口, 不需要提供實作類. 但是, 需要提供與接口比對的映射配置檔案. 前提是程式員需要遵循特定的規範.
- 使用接口綁定後, 可以簡化方法的調用和參數的傳遞.
2.實作接口綁定需要遵循的規範
- 必要規範: 必須遵循的規範
- 映射配置檔案中, mapper的namespace屬性必須和接口的全限定路徑一緻
- 操作資料庫的标簽的id屬性必須和接口中對應方法的名稱一緻
- 可選規範: 選擇遵循, 如果遵循, 還可以進一步簡化(在核心配置檔案中可以使用package标簽進行映射檔案的統一掃描)
- 映射檔案的命名和接口命名一緻
- 映射檔案和接口放在同一個目錄
3.接口綁定中擷取接口類型對象的方式
SqlSession對象中提供了一個方法, 用于擷取接口類型的對象, 叫: getMapper(接口的Class對象)
- 可以傳遞簡單類型, 和之前一樣
- 可以傳遞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();
}