天天看點

MyBatis3 接口綁定方案實作

第一節(接口綁定) 什麼是接口綁定 了解
要遵循的規範 掌握
參數傳遞問題 掌握
  1. 什麼是接口綁定     
  • 接口綁定, 是MyBatis中提供的一種比較靈活的資料庫操作方案. 用于解決方法調用不靈活, 參數傳遞不靈活的問題. 通過接口綁定, 還可以像之前使用dao一樣去使用MyBatis.
  • 和dao不同的是, 在MyBatis的接口綁定實作過程中, 程式員隻需要提供接口, 不需要提供實作類. 但是, 需要提供與接口比對的映射配置檔案. 前提是程式員需要遵循特定的規範.
  • 使用接口綁定後, 可以簡化方法的調用和參數的傳遞.

   2.實作接口綁定需要遵循的規範

  1. 必要規範: 必須遵循的規範
  • 映射配置檔案中, mapper的namespace屬性必須和接口的全限定路徑一緻
  • 操作資料庫的标簽的id屬性必須和接口中對應方法的名稱一緻
  1. 可選規範: 選擇遵循, 如果遵循, 還可以進一步簡化(在核心配置檔案中可以使用package标簽進行映射檔案的統一掃描)
  • 映射檔案的命名和接口命名一緻
  • 映射檔案和接口放在同一個目錄

 3.接口綁定中擷取接口類型對象的方式

    SqlSession對象中提供了一個方法, 用于擷取接口類型的對象, 叫: getMapper(接口的Class對象)

  1. 可以傳遞簡單類型, 和之前一樣
  2. 可以傳遞Map集合, 隻能通過key擷取
  3. 可以傳遞POJO對象, 隻能通過getter方法對應的屬性擷取
  4. 多值傳遞:
  1. 不使用注解, 可以通過param1, param2, ...或arg0, arg1, ...的方式擷取
  2. 使用注解, 使用@Param注解, 由MyBatis将參數封裝為Map集合, 可以通過key擷取, 也可以通過param1, param2,...擷取, 不能通過arg0, arg1,...方式擷取.
  1. 代碼實作   
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();
}