| | |
| | | /** |
| | | * 表名Map |
| | | */ |
| | | private static Map<String, String> tabMap = new HashMap<>(3); |
| | | private static final Map<String, String> TAB_MAP = new HashMap<>(3); |
| | | |
| | | /** |
| | | * 添加过滤条件 |
| | | * 添加过滤条件:(?i)and |
| | | * |
| | | * @param wrapper QueryWrapper |
| | | * @param filter 原始过滤条件字符串 |
| | | */ |
| | | public void addFilterWrapper(QueryWrapper wrapper, String filter) { |
| | | public <T> void addFilterWrapper(QueryWrapper<T> wrapper, String filter) { |
| | | if (StringHelper.isEmpty(filter)) { |
| | | return; |
| | | } |
| | | |
| | | String[] strs = filter.trim().split(" (?i)and "); |
| | | String[] strs = filter.trim().split(" and | or "); |
| | | for (String str : strs) { |
| | | int start = str.indexOf(" "); |
| | | if (start == -1) { |
| | |
| | | continue; |
| | | } |
| | | |
| | | String field = str.substring(0, start).trim(); |
| | | String field = camelToUnderline(str.substring(0, start).trim()); |
| | | String express = str.substring(start + 1, end).trim().toLowerCase(); |
| | | String value = str.substring(end + 1).trim(); |
| | | |
| | | start = filter.indexOf(str) - StaticData.I4; |
| | | end = filter.indexOf(" or ", start); |
| | | if (start == end && start > -1) { |
| | | wrapper = wrapper.or(); |
| | | } |
| | | |
| | | addWrapper(wrapper, field, express, getObjectVal(express, value)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 驼峰转换为下划线 |
| | | */ |
| | | public static String camelToUnderline(String str) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (int i = 0, c = str.length(); i < c; i++) { |
| | | char ch = str.charAt(i); |
| | | if (Character.isUpperCase(ch)) { |
| | | sb.append('_').append(Character.toLowerCase(ch)); |
| | | } else { |
| | | sb.append(ch); |
| | | } |
| | | } |
| | | |
| | | return sb.toString().replaceAll("_+", "_"); |
| | | } |
| | | |
| | | /** |
| | | * 下划线转换为驼峰 |
| | | */ |
| | | public static String underlineToCamel(String str) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | |
| | | boolean nextIsCapitalized = false; |
| | | for (int i = 0, c = str.length(); i < c; i++) { |
| | | char ch = str.charAt(i); |
| | | if (ch == '_') { |
| | | nextIsCapitalized = true; |
| | | continue; |
| | | } |
| | | if (nextIsCapitalized) { |
| | | sb.append(Character.toUpperCase(ch)); |
| | | nextIsCapitalized = false; |
| | | } else { |
| | | sb.append(Character.toLowerCase(c)); |
| | | } |
| | | } |
| | | |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param express 表达式 |
| | | * @param val 值 |
| | | */ |
| | | private void addWrapper(QueryWrapper wrapper, String field, String express, Object val) { |
| | | private <T> void addWrapper(QueryWrapper<T> wrapper, String field, String express, Object val) { |
| | | if (StringHelper.isDate(val.toString())) { |
| | | wrapper.apply(String.format("%s %s '%s'", field, express, val)); |
| | | return; |
| | |
| | | */ |
| | | public static String getTabName(BasicMapper basicMapper) { |
| | | String className = ClassHelper.getClassName(basicMapper); |
| | | if (tabMap.containsKey(className)) { |
| | | return tabMap.get(className); |
| | | if (TAB_MAP.containsKey(className)) { |
| | | return TAB_MAP.get(className); |
| | | } |
| | | |
| | | return getTabName(className); |
| | |
| | | TableName annotation = (TableName) clazz.getAnnotation(TableName.class); |
| | | |
| | | String tabName = annotation.value(); |
| | | if (tabName != null && !tabMap.containsKey(className)) { |
| | | tabMap.put(className, tabName); |
| | | if (tabName != null && !TAB_MAP.containsKey(className)) { |
| | | TAB_MAP.put(className, tabName); |
| | | } |
| | | |
| | | return tabName; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Integer selectTabsForCount(String tab, String field) { |
| | | public Integer selectTabsForCount(String tab, String typesFilter, String field) { |
| | | tab = StringHelper.getLikeUpperStr(tab); |
| | | |
| | | return baseQueryMapper.selectTabsForCount(tab, field); |
| | | return baseQueryMapper.selectTabsForCount(tab, typesFilter, field); |
| | | } |
| | | |
| | | @Override |
| | | public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) { |
| | | public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset) { |
| | | tab = StringHelper.getLikeUpperStr(tab); |
| | | |
| | | return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset); |
| | | return baseQueryMapper.selectTabsByPage(tab, typesFilter, field, filters, limit, offset); |
| | | } |
| | | |
| | | @Override |