Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
33b077e2
Commit
33b077e2
authored
Dec 25, 2019
by
杨锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
searchUserDetailList 优化。
parent
68967cf0
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
35 deletions
+37
-35
UserDetailServiceImpl.java
...ntgroup/xyqb/service/user/impl/UserDetailServiceImpl.java
+37
-35
No files found.
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserDetailServiceImpl.java
View file @
33b077e2
...
@@ -83,29 +83,7 @@ public class UserDetailServiceImpl implements IUserDetailService {
...
@@ -83,29 +83,7 @@ public class UserDetailServiceImpl implements IUserDetailService {
@Override
@Override
public
List
<
UserDetailVO
>
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
)
{
public
List
<
UserDetailVO
>
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
)
{
/* 优化两次sql查询耗时问题,示例name=王斌*/
return
jdbcTemplate
.
query
(
buildSearchUserDetailListSql
(
name
,
phoneNo
,
idNo
),
(
resultSet
,
i
)
->
{
// TODO: 2019/12/24 by rui 暂未找到jpa data同时满足join,动态传参方式。若日后发现,应优化该段代码。
/* 高层模块已校验至少必须满足一个条件不为空 */
StringBuilder
sqlBuilder
=
new
StringBuilder
(
"select ud.*, u.enable "
+
" from user_detail ud"
+
" left join user u on (u.id = ud.user_id)"
+
" where"
);
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
name
))
{
sqlBuilder
.
append
(
" name = "
).
append
(
"'"
).
append
(
name
).
append
(
"'"
).
append
(
" and"
);
}
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
phoneNo
))
{
sqlBuilder
.
append
(
" ud.phone_no = "
).
append
(
"'"
).
append
(
phoneNo
).
append
(
"'"
).
append
(
" and"
);
}
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
idNo
))
{
sqlBuilder
.
append
(
" id_no = "
).
append
(
"'"
).
append
(
idNo
).
append
(
"'"
).
append
(
" and"
);
}
String
sql
=
sqlBuilder
.
toString
();
if
(
sql
.
endsWith
(
"and"
))
{
sql
=
sql
.
substring
(
0
,
sql
.
length
()
-
3
);
}
return
jdbcTemplate
.
query
(
sql
,
new
RowMapper
<
UserDetailVO
>()
{
@Override
public
UserDetailVO
mapRow
(
ResultSet
resultSet
,
int
i
)
throws
SQLException
{
UserDetailVO
userDetailVO
=
new
UserDetailVO
();
UserDetailVO
userDetailVO
=
new
UserDetailVO
();
userDetailVO
.
setId
(
resultSet
.
getLong
(
"id"
));
userDetailVO
.
setId
(
resultSet
.
getLong
(
"id"
));
userDetailVO
.
setUserId
(
resultSet
.
getLong
(
"user_id"
));
userDetailVO
.
setUserId
(
resultSet
.
getLong
(
"user_id"
));
...
@@ -121,7 +99,6 @@ public class UserDetailServiceImpl implements IUserDetailService {
...
@@ -121,7 +99,6 @@ public class UserDetailServiceImpl implements IUserDetailService {
userDetailVO
.
setCreatedAt
(
resultSet
.
getTimestamp
(
"created_at"
).
getTime
());
userDetailVO
.
setCreatedAt
(
resultSet
.
getTimestamp
(
"created_at"
).
getTime
());
userDetailVO
.
setUpdatedAt
(
resultSet
.
getTimestamp
(
"updated_at"
).
getTime
());
userDetailVO
.
setUpdatedAt
(
resultSet
.
getTimestamp
(
"updated_at"
).
getTime
());
return
userDetailVO
;
return
userDetailVO
;
}
});
});
// TODO: 2019/12/24 by rui branch feature_optimize_20191223 上线验证后,即删除该注释块
// TODO: 2019/12/24 by rui branch feature_optimize_20191223 上线验证后,即删除该注释块
...
@@ -140,6 +117,31 @@ public class UserDetailServiceImpl implements IUserDetailService {
...
@@ -140,6 +117,31 @@ public class UserDetailServiceImpl implements IUserDetailService {
// return userDetailVOS;
// return userDetailVOS;
}
}
private
String
buildSearchUserDetailListSql
(
String
name
,
String
phoneNo
,
String
idNo
)
{
/* 优化两次sql查询耗时问题,示例name=王斌*/
// TODO: 2019/12/24 by rui 暂未找到jpa data同时满足join,动态传参方式。若日后发现,应优化该段代码。
/* 高层模块已校验至少必须满足一个条件不为空 */
StringBuilder
sqlBuilder
=
new
StringBuilder
(
"select ud.*, u.enable "
+
" from user_detail ud"
+
" left join user u on (u.id = ud.user_id)"
+
" where"
);
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
name
))
{
sqlBuilder
.
append
(
" name = "
).
append
(
"'"
).
append
(
name
).
append
(
"'"
).
append
(
" and"
);
}
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
phoneNo
))
{
sqlBuilder
.
append
(
" ud.phone_no = "
).
append
(
"'"
).
append
(
phoneNo
).
append
(
"'"
).
append
(
" and"
);
}
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
idNo
))
{
sqlBuilder
.
append
(
" id_no = "
).
append
(
"'"
).
append
(
idNo
).
append
(
"'"
).
append
(
" and"
);
}
String
sql
=
sqlBuilder
.
toString
();
if
(
sql
.
endsWith
(
"and"
))
{
sql
=
sql
.
substring
(
0
,
sql
.
length
()
-
3
);
}
sql
=
sql
+
" limit 500"
;
return
sql
;
}
@Override
@Override
public
List
<
UserDetail
>
findByUserIdIn
(
List
<
Long
>
userIds
)
{
public
List
<
UserDetail
>
findByUserIdIn
(
List
<
Long
>
userIds
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment