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的值要與接口的類簽名(包名+類名)保持一緻