Spring Data JDBC 簡單使用
Spring Data JDBC 簡單使用
目錄
因為想簡化數(shù)據(jù)庫查詢函數(shù)的寫法(相對 JbdcTemplate 而言),從而了解到 Spring Data JDBC (相對于 Spring Data JPA ,功能簡單很多)。
1. 簡單例子
代碼1? User.java
代碼2? UserRepository.java
2. 主鍵不設(shè)置 auto_increment
代碼3? UserCallback.java
3. @MappedCollection
兩張表要有相同內(nèi)容的主鍵
4. 使用 JdbcTemplate 自定義操作
1. 定義 interface
2. 實現(xiàn) interface ,Spring 搜索該 interface 的實現(xiàn)時,默認(rèn)后綴為 Impl
3. 繼承 interface ,相同函數(shù)「按繼承的聲明順序」決定優(yōu)先級
5. mappedCollection 測試
在文檔中看到 Spring Data JDBC 支持 one-to-one relationship ,one-to-many relationship ,以為可以直接獲取到外鍵關(guān)聯(lián)表的數(shù)據(jù),但經(jīng)過簡單測試后發(fā)現(xiàn),貌似和 自己理解的有偏差。
經(jīng)過測試后得到的結(jié)論:兩張表要有相同內(nèi)容的主鍵。
5.1. 數(shù)據(jù)庫表
5.2. 表對應(yīng)的 Java 對象
代碼4? User.java
代碼5? Role.java
5.3. 測試
用 CrudRepository.findById
,然后看執(zhí)行的 SQL
5.3.1. 設(shè)置 user.account
為 @Id
1. @MappedCollection(idColumn = "id", keyColumn = "roleId")
2. @MappedCollection(idColumn = "id")
和 @MappedCollection(idColumn = "id", keyColumn = "roleId") 一樣
3. @MappedCollection(idColumn = "roleId")
5.3.2. 設(shè)置 user.username
為 @Id
,并且 @MappedCollection(idColumn = "id")
5.3.3. 將 Role role
改為 Set<Role> role
會執(zhí)行兩次 SQL
兩者傳入的參數(shù)相同