MybatisSqlUtils.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package cn.com.ty.lift.common.utils;
  2. import java.util.List;
  3. import java.util.Map;
  4. /**
  5. * @author huangyuan
  6. * @date 2020/4/18
  7. * @description mybatis @select 自定义sql 处理工具
  8. */
  9. public class MybatisSqlUtils {
  10. /**
  11. * @param
  12. * @return
  13. * @description 获取查询通过用户id,获取推送用户信息的接口
  14. * @date 2020/5/3 11:27 上午
  15. */
  16. public String getPushUserInfoByUserId(Map<String, Object> params) {
  17. Long userId = (Long) params.get("userId");
  18. StringBuilder sb = getUserInfoOneSql();
  19. sb.append("and ua.user_id = ").append(userId);
  20. return sb.toString();
  21. }
  22. /**
  23. * @param params 查询参数
  24. * @return 拼接的sql语句
  25. * @description 通过给定参数拼接sql - 获取当前公司指定角色的用户信息
  26. * @date 2020/4/18 6:27 下午
  27. */
  28. @SuppressWarnings("unchecked")
  29. public String getPushUserInfoByRoleCodesSql(Map<String, Object> params) {
  30. List<String> roleCodeList = (List<String>) params.get("roleCodeList");
  31. Long companyId = (Long) params.get("companyId");
  32. //获取通用语句
  33. StringBuilder sql = getPushUserInfoSql();
  34. if (roleCodeList != null && roleCodeList.size() > 0) {
  35. sql.append("and r.code in (");
  36. //拼接list语句
  37. spliceList(roleCodeList, sql);
  38. }
  39. sql.append("and ur.company_id=").append(companyId);
  40. System.out.println(sql.toString());
  41. return sql.toString();
  42. }
  43. /**
  44. * @param params 查询参数
  45. * @return 拼接的sql语句
  46. * @description 通过给定参数拼接sql - 获取当前公司指定角色的用户信息
  47. * @date 2020/4/18 6:27 下午
  48. */
  49. @SuppressWarnings("unchecked")
  50. public String getPushUserInfoByIdsSql(Map<String, Object> params) {
  51. List<Long> userIdList = (List<Long>) params.get("userIdList");
  52. Long companyId = (Long) params.get("companyId");
  53. //获取通用语句
  54. StringBuilder sql = getPushUserInfoSql();
  55. if (userIdList != null && userIdList.size() > 0) {
  56. sql.append("and ua.user_id in (");
  57. //拼接list语句
  58. spliceList(userIdList, sql);
  59. }
  60. sql.append("and ur.company_id=").append(companyId);
  61. System.out.println(sql);
  62. return sql.toString();
  63. }
  64. /**
  65. * @param list 要拼接的list
  66. * @description 拼接语句
  67. * @date 2020/4/18 6:37 下午
  68. */
  69. private static void spliceList(List<?> list, StringBuilder sql) {
  70. for (int i = 0; i < list.size(); i++) {
  71. sql.append("'").append(list.get(i));
  72. if (i == list.size() - 1) {
  73. sql.append("')");
  74. } else {
  75. sql.append("',");
  76. }
  77. }
  78. }
  79. /**
  80. * @return 通用语句
  81. * @description 获取查询通用语句
  82. * @date 2020/4/18 6:51 下午
  83. */
  84. private static StringBuilder getPushUserInfoSql() {
  85. StringBuilder sql = new StringBuilder();
  86. sql.append("select ui.user_id as userId, ");
  87. sql.append("ui.name as userName, ");
  88. sql.append("ua.mobile as mobile, ");
  89. sql.append("ua.device_model as deviceModel, ");
  90. sql.append("ua.device_flag as deviceFlag, ");
  91. sql.append("r.name as roleName from ");
  92. sql.append("user_account ua ");
  93. sql.append("left join user_info ui on ua.user_id = ui.user_id ");
  94. sql.append("left join user_role ur on ua.user_id = ur.user_id ");
  95. sql.append("left join role r on r.id = ur.role_id ");
  96. sql.append("where true ");
  97. return sql;
  98. }
  99. /**
  100. * @param
  101. * @return
  102. * @description 获取单个用户信息sql
  103. * @date 2020/5/4 10:49 上午
  104. */
  105. private static StringBuilder getUserInfoOneSql() {
  106. StringBuilder sql = new StringBuilder();
  107. sql.append("select ui.user_id as userId, ");
  108. sql.append("ui.name as userName, ");
  109. sql.append("ua.mobile as mobile, ");
  110. sql.append("ua.device_model as deviceModel, ");
  111. sql.append("ua.device_flag as deviceFlag ");
  112. sql.append("from user_account ua ");
  113. sql.append("left join user_info ui on ua.user_id = ui.user_id ");
  114. sql.append("where true ");
  115. return sql;
  116. }
  117. }