天天看點

Mybatis,配置檔案頭,原始JDBC問題,代理開發

mybatis配置檔案的頭部資訊

configure配置檔案頭

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
           

mapper映射檔案頭

<?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">
           

原始JDBC開發中存在的問題:

List<Emp> empList = new ArrayList<>();
//注冊驅動
Class.forName("com.mysql.cj.jdbc.Driver");
//擷取連接配接對象
Connection connection = DriverManager.getConnection(url,username,password);
//預編譯SQL語句
String sql = "select ..... where eno=? and ename=?";
PreparedStatement statement = connection.prepareStatement(sql);
//設定參數
ps.setInt(1,16);
ps.setString(2,"haha");
//執行SQL
ResultSet resultSet = ps.executeQuery();
//處理結果集
while(resultSet.next()){
  Emp emp = new Emp();
  emp.setInt(resultSet.getInt(1));
  ...
  empList.add(emp);
}
//關閉連接配接對象
close(connection,statement,resultSet);
           

1.頻繁打開及關閉資料庫操作,影響資料的性能

​ 解決方案:使用資料庫連接配接池進行管理

2.寫死(固定的數字或字元等)過多,影響後期的維護

​ 例如:if(1>2){},int a=1,b=2;if(a>b){}

​ 解決方案:直接将相關的常量,用一個統一的檔案(xml)進行管理

3.關系映射比較麻煩,編碼備援,不利于後期的維護

​ 解決方案:提前指定映射關系(xml)

4.對SQL相關的操作,一旦改動之後,整個java項目都需要重新編譯,影響系統性能

​ 解決方案:把資料庫相關的操作抽離出來(xml)

Mapper代理開發

dao層開發存在的問題:

通過dao層及其實作類的方式在進行Mybatis的增删改查時存在的問題(參考dao實作類代碼進行分析)

1.仍然存在寫死的問題(指定查詢的statementid【test.queryEmpById】)

2.功能實作的過程中,對于輸入的參數類型以及傳回值類型都是Object類型,不嚴謹

3.代碼實作時存在大量的重複書寫的問題

Mapper代理開發規範:

1.要求接口和映射檔案在同一個路徑下

2.要求接口名與映射檔案名保持一緻

3.要求接口中的方法名與映射檔案中的id名保持一緻

4.要求接口中的參數類型與映射檔案中的參數類型保持一緻

5.要求接口中的方法傳回值類型與映射檔案中的傳回值類型保持一緻

6.要求映射檔案中的namespace的值要與接口的類簽名(包名+類名)保持一緻

繼續閱讀