1
1
package com .springboot .springbootjpaquerydsl .service .impl ;
2
2
3
3
import com .querydsl .core .types .Projections ;
4
+ import com .querydsl .core .types .dsl .Expressions ;
4
5
import com .querydsl .jpa .impl .JPAQueryFactory ;
5
6
import com .springboot .springbootjpaquerydsl .dto .UserDTO ;
6
- import com .springboot .springbootjpaquerydsl .model .LessonModel ;
7
7
import com .springboot .springbootjpaquerydsl .model .QLessonModel ;
8
8
import com .springboot .springbootjpaquerydsl .model .QUserModel ;
9
9
import com .springboot .springbootjpaquerydsl .model .UserModel ;
@@ -30,31 +30,36 @@ public class UserServiceImpl implements UserService {
30
30
@ Override
31
31
public Long update (String id , String nickName ) {
32
32
QUserModel userModel = QUserModel .userModel ;
33
+ // 更新
33
34
return queryFactory .update (userModel ).set (userModel .nickName , nickName ).where (userModel .id .eq (id )).execute ();
34
35
}
35
36
36
37
@ Override
37
38
public Long delete (String id ) {
38
39
QUserModel userModel = QUserModel .userModel ;
40
+ // 删除
39
41
return queryFactory .delete (userModel ).where (userModel .id .eq (id )).execute ();
40
42
}
41
43
42
44
@ Override
43
45
public List <String > selectAllNameList () {
44
46
QUserModel userModel = QUserModel .userModel ;
47
+ // 查询字段
45
48
return queryFactory .select (userModel .nickName ).from (userModel ).fetch ();
46
49
}
47
50
48
51
@ Override
49
52
public List <UserModel > selectAllUserModelList () {
50
53
QUserModel userModel = QUserModel .userModel ;
54
+ // 查询实体
51
55
return queryFactory .selectFrom (userModel ).fetch ();
52
56
}
53
57
54
58
@ Override
55
59
public List <UserDTO > selectAllUserDTOList () {
56
60
QUserModel userModel = QUserModel .userModel ;
57
61
QLessonModel lessonModel = QLessonModel .lessonModel ;
62
+ // 连表查询实体并将结果封装至DTO
58
63
return queryFactory
59
64
.select (
60
65
Projections .bean (UserDTO .class , userModel .nickName , userModel .age , lessonModel .startDate , lessonModel .address , lessonModel .name )
@@ -68,18 +73,46 @@ public List<UserDTO> selectAllUserDTOList() {
68
73
@ Override
69
74
public List <String > selectDistinctNameList () {
70
75
QUserModel userModel = QUserModel .userModel ;
76
+ // 去重查询
71
77
return queryFactory .selectDistinct (userModel .nickName ).from (userModel ).fetch ();
72
78
}
73
79
74
80
@ Override
75
81
public UserModel selectFirstUser () {
76
82
QUserModel userModel = QUserModel .userModel ;
83
+ // 查询首个实体
77
84
return queryFactory .selectFrom (userModel ).fetchFirst ();
78
85
}
79
86
80
87
@ Override
81
88
public UserModel selectUser (String id ) {
82
89
QUserModel userModel = QUserModel .userModel ;
90
+ // 查询单个实体,如果结果有多个,会抛`NonUniqueResultException`。
83
91
return queryFactory .selectFrom (userModel ).fetchOne ();
84
92
}
93
+
94
+ @ Override
95
+ public String mysqlFuncDemo (String id , String nickName , int age ) {
96
+
97
+ QUserModel userModel = QUserModel .userModel ;
98
+
99
+ // Mysql 聚合函数示例
100
+
101
+ // 聚合函数-avg()
102
+ Double averageAge = queryFactory .select (userModel .age .avg ()).from (userModel ).fetchOne ();
103
+
104
+ // 聚合函数-sum()
105
+ Integer sumAge = queryFactory .select (userModel .age .sum ()).from (userModel ).fetchOne ();
106
+
107
+ // 聚合函数-concat()
108
+ String concat = queryFactory .select (userModel .nickName .concat (nickName )).from (userModel ).fetchOne ();
109
+
110
+ // 聚合函数-contains()
111
+ Boolean contains = queryFactory .select (userModel .nickName .contains (nickName )).from (userModel ).where (userModel .id .eq (id )).fetchOne ();
112
+
113
+ // 聚合函数-DATE_FORMAT()
114
+ String date = queryFactory .select (Expressions .stringTemplate ("DATE_FORMAT({0},'%Y-%m-%d')" , userModel .createDate )).from (userModel ).fetchOne ();
115
+
116
+ return null ;
117
+ }
85
118
}
0 commit comments