Commit 33b077e2 authored by 杨锐's avatar 杨锐

searchUserDetailList 优化。

parent 68967cf0
...@@ -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) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment