天天看點

Mybatis 接口式程式設計

作者:JasonWX

一、為什麼使用接口式程式設計

1、為了確定名稱空間(namespace)的唯一性,通常會使用相對較長的、且有一定含義的字元串來作為其值,

這樣就很難保證我們在代碼不出現拼寫錯誤的情況,即使是直接從映射檔案拷貝過來的,也存在不經意間被修 改的可能性;

2、從selectXXX方法的簽名可以看到,她的第二個參數是Object類型,

那麼如果我們傳入的參數類型與映射檔案中由parameterType屬性指定的類型不一緻時,

将會出現不可預知的錯誤[org.apache.ibatis.type.TypeException]

3、同樣,selectXXX方法傳回值使用了泛型,

我們須確定用于接收其傳回值的變量類型與映射檔案中屬性resultType指定的類型相一緻

二、接口式程式設計流程

1、db.properties

driver(資料庫驅動類)

url(資料庫連結位址)

username(資料庫使用者名)

password(資料庫密碼)

注意事項:mysql的版本号,你們現在下載下傳的mysql版本是8以上,driver驅動類和5的版本不一樣!!

driver=com.mysql.jdbc.Driver

但是8以上的版本

driver=com.mysql.cj.jdbc.Driver

URL位址8以上的位址:characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

2、mybatis-config.xml

Mybatis 接口式程式設計

3、建立一個包(package)mapper

我習慣建立的這個包叫:mapper

重點:mapper這個包下面存放的内容?

3.1、建立一個接口(UserInfoMapper.java)

注意:這個接口的名稱

Mybatis 接口式程式設計

3.2、注意UserInfoMapper.xml中的namespace

namespace的值需要和Mapper接口的類的路徑一緻。

Mybatis 接口式程式設計

3.3、接口中的方法注意事項

package com.mapper;
import com.pojo.UserInfo;

import java.util.List;

// 接口中的方法都是抽象方法
public interface UserInfoMapper
{
    // 查詢user_info表中的所有資料

/*   關注點:
     1、方法名
            需要和UserInfoMapper.xml中執行語句的元素的id值一緻
            selectAll
      2、傳回值類型
         需要和映射檔案(UserInfoMapper.xml)中執行語句的元素的resultType一緻
          List<UserInfo>
      3、方法的輸入參數類型需要和映射檔案(UserInfoMapper.xml)中執行語句的元素的parameterType一緻
      */
        List<UserInfo> selectAll();

}

           

4、測試代碼

4.1、擷取mapper接口的代理對象

4.2、調用mapper接口中的方法

// 擷取UserInfoMapper接口的代理對象
  UserInfoMapper userInfoMapper= sqlSession.getMapper(UserInfoMapper.class);
  // 直接通路接口中定義的方法
List<UserInfo> list = userInfoMapper.selectAll();
  // 輸出結果
  for(UserInfo userInfo:list){
      System.out.println(userInfo.toString());
  }           

繼續閱讀