2023-01-10
一、Mybatis中獲取主鍵自增資料
要獲取自增資料時,需要在映射檔案中的“<insert>”中添加兩個屬性,例如獲取自增的id
①EmployeeMapper.xml中的<mapper>標簽內部
<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="id"> INSERT INTO tbl_employee(last_name,email,salary) VALUES (#{lastName},#{email},#{salary}) </insert>
②之后在測驗檔案中的測驗自增關鍵代碼
Employee employee = new Employee(null,"pingp","[email protected]",50.0); //測驗添加員工資訊 employeeMapper.insertEmployee(employee); //查詢剛剛添加員工的id System.out.println("employee.getId() = " + employee.getId());
之后進行運行,結果中出現員工編號,代碼OK,
③說明:useGeneratedKeys:啟用主鍵生成策略(回傳值是true);keyProperty:設定存盤屬性值
二、獲取資料庫受影響行數
直接將介面中方法的回傳值設定為int或boolean即可
(1)設定為int:表示受影響的行數
(2)設定為boolean:表示資料庫中的資料是否受到影響
三、Mybatis中引數傳遞問題
1、單個普通引數
可以任意使用:引數資料型別、引數名稱不用考慮,
即如果是單個引數時,在映射檔案中,在“#{}”內部填寫的引數可以是任意的字母,但一般還是建議見名知意,
2、多個普通引數
Mybatis底層封裝Map結構,封裝key為param1、param2...(或者是arg0、arg1、...),即在映射檔案中“#{}”傳遞引數的寫法,
3、POJO引數
Mybatis支持POJO入參,引數key是POJO中屬性
在介面中宣告的函式的引數是存放在“POJO”檔案夾下類的物件
在映射檔案中在傳引數陳述句中,等號左邊放置的是資料庫中的欄位,等號的右邊存放的是“#{類中的屬性}”
4、命名引數
在介面中宣告函式使,傳遞的引數使用的是注解,用法如下:
/** * 功能:通過命名引數查詢員工資訊 * @param lastname * @param salary * @return */ public List<Employee> selectEmployeeByNamed(@Param("lastName")String lastname,@Param("salary")double salary);
在映射檔案中引數可以直接使用注解中的命名值,
5、Map引數
Mybatis支持直接Map入參,map的key=引數key
四、#與$的區別
1、#與$的區別
(1)#:底層執行SQL陳述句的物件,使用PreparedStatement,預編譯SQL,防止SQL注入隱患,相對比較安全
(2)$:底層執行SQL陳述句的物件使用Statement物件,使用拼接方式,未解決SQL注入安全隱患,相對不安全,
2、#與$使用場景
(1)#:sql占位符位置均可使用#
(2)$:#解決不了的引數傳遞問題,均可以交給$處理(如:form動態化表名)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541643.html
標籤:其他
上一篇:一次JVM GC長暫停的排查程序
