一、為什麼使用接口式程式設計
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
3、建立一個包(package)mapper
我習慣建立的這個包叫:mapper
重點:mapper這個包下面存放的内容?
3.1、建立一個接口(UserInfoMapper.java)
注意:這個接口的名稱
3.2、注意UserInfoMapper.xml中的namespace
namespace的值需要和Mapper接口的類的路徑一緻。
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());
}