SpringDataJPA之Repository接口
Repository 接口是 spring Data JPA 中為我我們提供的所有接口中的頂層接口,而且是個標志接口,Repository 提供了兩種查詢方式的支持
1)基于方法名稱命名規則查詢
2)基于@Query 注解查詢
Repository
一、基于方法名稱命名規則查詢
1.方法名稱命名規則查詢
規則:findBy(關鍵字)+屬性名稱(屬性名稱的首字母大寫)+查詢條件(首字母大寫)
2.具體使用
創建接口,并定義相關方法
/** * Repository 接口使用 * 定義的方法名稱 參考文檔定義 */ public interface UserDao extends Repository
1
2
3
4
5
6
7
8
9
單元測試
/** * @program: spring-hibernate * @description: 單元測試 * @author: 波波烤鴨 * @create: 2019-05-18 09:48 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class TestDemo { @Autowired private UserDao usersDao; /** * 需求:使用用戶名作為查詢條件 */ @Test public void test1() { /** * 判斷相等的條件,有三種表示方式 * 1,什么都不寫,默認的就是做相等判斷 * 2,Is * 3,Equal */ List
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
查詢結果
二、基于@Query 注解查詢
通過方法命令的方式使用的方式如果查詢條件比較復雜,那么方法的名稱就會很長,不是很方便,這時我們可以通過@Query注解的方式來實現。
2.1通過 JPQL 語句查詢
JPQL:通過 Hibernate 的 HQL 演變過來的。他和 HQL 語法及其相似。
創建接口
//使用@Query 注解查詢 @Query(value="from Users where username = ?") List
1
2
3
4
5
6
7
單元測試
/** * 測試@Query 查詢 JPQL */ @Test public void test4(){ List
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2.2通過SQL語句查詢
我們也可以直接在定義的方法頭部通過@Query注解來添加Sql語句來實現,具體如下:
//使用@Query 注解查詢 SQL //nativeQuery:默認的是 false.表示不開啟 sql 查詢。是否對 value 中的語句做轉義。 @Query(value="select * from users where username = ?",nativeQuery=true) List
1
2
3
4
5
6
7
8
單元測試
/** * 測試@Query 查詢 SQL */ @Test public void test7(){ List
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2.3 通過@Query 注解完成數據更新
@Query注解可以完成數據的更新操作,但是不能實現添加和刪除數據的操作,實現如下:
接口中聲明方法:
@Query("update Users set userage = ? where userid = ?") @Modifying //@Modifying 當前語句是一個更新語句 void updateUserAgeById(Integer age,Integer id);
1
2
3
單元測試
/** * 測試@Query update */ @Test @Transactional @Rollback(false) public void test10(){ this.usersDao.updateUserAgeById(24, 6); }
1
2
3
4
5
6
7
8
9
通過以上的介紹,我們發現Repository接口主要還是實現查詢相關的操作,對DML的支持并不友好,下篇我們講介紹CrudRepository接口。下篇見~
SQL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。