1. MyBatis資料輸入
1.1 Mybatis總體機制概括

1.2 概念說明

注意:這里的簡單型別不是指的基本資料型別,
1.3 單個簡單型別引數
1.3.1 Mapper介面中的抽象方法
|
public interface EmpMapper { /** * 通過這個方法對應Mapper組態檔中的SQL陳述句 * @param empId 當前方法的引數對應SQL陳述句中#{empId}宣告的引數 * @return 當前方法的回傳值型別和resultType屬性指定的型別一致 */ abstract public Emp selectById(long empId); } |
1.3.2 SQL陳述句
|
<!-- resultType屬性:指定封裝查詢結果的Java物體類的全類名 Mybaits負責決議結果集,將決議得到的資料封裝到設定的JavaBean類中, --> <select id="selectById" resultType="com.hy.bean.Emp"> <!-- Mybatis負責把SQL陳述句中的#{empId}部分替換成"?"占位符 在#{}內部還是要宣告一個見名知意的名稱,一般與JavaBean中屬性名保持一致 #{empId}這里是為了方便接收Java程式傳過來的引數資料 --> select emp_id empId,emp_name empName,emp_pwd empPwd,emp_gender empGender , emp_salary empSalary from sys_emp where emp_id = #{empId} </select> |
1.4 復雜型別引數
1.4.1 物體型別別的引數
1) EmpMapper介面中抽象方法宣告
abstract public int insert(Emp emp);
2)SQL陳述句
<insert id=”insert”>
insert into sys_emp(emp_name,emp_pwd,emp_gender,emp_salary)
values(#{empName},#{empPwd},#{empGender},#{empSalary})
</insert>
如果是物體型別別的引數,此時,#{}中的名字就不能隨便寫了,此時運算式中的名字,就需要和Emp物體類中getXxx方法名,去掉get,然后剩下的單詞其首字母小寫后的名字相對應,
mybaits會根據#{}運算式中的名字,根據反射機制,找到Emp中的getXxx方法,獲取對應的資料,
1.4.2 對應關系如圖:

1.5 零散的簡單型別資料





1.6 Map型別引數
如果零散的簡單型別太多了,可以使用Map型別




|
create table sys_emp( emp_id bigint auto_increment, emp_name varchar(20), emp_pwd varchar(20), emp_gender enum('m','f'), emp_salary double(10,5), primary key(emp_id) );
INSERT INTO `sys_emp` VALUES (null, '范冰冰', 'fbb', 'f', 100.5); INSERT INTO `sys_emp` VALUES (null, '李冰冰', 'lbb', 'f', 300); INSERT INTO `sys_emp` VALUES (null, '張彬彬', 'zbb', 'm', 599); INSERT INTO `sys_emp` VALUES (null, '萬茜', 'wq', 'm', 4000); INSERT INTO `sys_emp` VALUES (null, '李若彤', 'lrt', 'm', 5000.8);
select * from `sys_emp`; |

2. Mybatis資料輸出
2.1 回傳單個簡單型別

2.2 回傳自增的主鍵
使用場景:保存訂單Order物件 和 訂單明細 List<OrderItem>,其中,OrderItem對應表t_order_item表,包含一個外鍵,指向t_order表中的主鍵,


insertWithKey,注意:回傳值還是受影響的行數,它會將插入的主鍵,回傳到傳遞過來物件指定的屬性里面,

2.3 回傳物體型別
假設我們沒有寫列的別名,則回傳null,因為值無法注入,所以就算查詢出來,也沒意義,所以mybaits干脆回傳一個null給你,


2.3.1 資料庫表欄位和物體類屬性對應
給列的欄位起別名

2.3.2 如何自動的進行匹配呢?
資料庫表中欄位的命名是按照規范來進行設計的emp_name,java類中的屬性也是按規范設計的empName,那么每次都寫別名感覺很麻煩,該如何處理???


2.4 回傳Map型別





2.5 回傳List型別




2.6 資料庫表的欄位和物體類屬性的對應關系
2.6.1 給表的欄位起別名
2.6.2 全域配置自動識別駝峰式命名規則

2.6.3 使用resultMap
使用resultMap標簽定義對應關系,再再后面的SQL陳述句中參考這個對應關系,





轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/502606.html
標籤:架構設計
上一篇:對抗軟體復雜度的戰爭
下一篇:對抗軟體復雜度的戰爭
