Commit 4631c60c1e611af9920cce1def972be7c816762a
1 parent
94117321
Exists in
master
and in
2 other branches
1.optimized query func
Showing
2 changed files
with
31 additions
and
5 deletions
Show diff stats
build.gradle
src/main/java/com/taover/repository/CustomJdbcTemplate.java
... | ... | @@ -601,11 +601,24 @@ public class CustomJdbcTemplate<T, ID extends Serializable> { |
601 | 601 | } |
602 | 602 | |
603 | 603 | public Map<String, Object> getPageData(String coreSql, String orderByPartSql, Integer page, Integer pageSize){ |
604 | + int fromIndex = coreSql.toUpperCase().indexOf("FROM"); | |
605 | + String selectSql = ""; | |
606 | + String fromAndWhereSql = ""; | |
607 | + if(fromIndex > -1) { | |
608 | + selectSql = coreSql.substring(0, fromIndex); | |
609 | + fromAndWhereSql = coreSql.substring(fromIndex, coreSql.length()); | |
610 | + }else { | |
611 | + return UtilsSql.createPage(page, pageSize, 0, new ArrayList<Object>()); | |
612 | + } | |
613 | + return this.getPageData(selectSql, fromAndWhereSql, orderByPartSql, page, pageSize); | |
614 | + } | |
615 | + | |
616 | + public Map<String, Object> getPageData(String selectSql, String fromAndWhereSql, String orderByPartSql, Integer page, Integer pageSize){ | |
604 | 617 | //构造查询语句 |
605 | - String querySql = coreSql+orderByPartSql+UtilsSql.getLimitCondition(page, pageSize); | |
618 | + String querySql = selectSql+" "+fromAndWhereSql+" "+orderByPartSql+" "+UtilsSql.getLimitCondition(page, pageSize); | |
606 | 619 | |
607 | 620 | //构造统计计数语句 |
608 | - String countSql = "select count(*) rows from ("+coreSql+" ) t "; | |
621 | + String countSql = "select count(*) rows from ( select 1 "+fromAndWhereSql+" ) t "; | |
609 | 622 | |
610 | 623 | //执行查询 |
611 | 624 | List<Map<String, Object>> queryData = new ArrayList<Map<String, Object>>(); |
... | ... | @@ -616,11 +629,24 @@ public class CustomJdbcTemplate<T, ID extends Serializable> { |
616 | 629 | } |
617 | 630 | |
618 | 631 | public <E> Map<String, Object> getBeanPageData(String coreSql, String orderByPartSql, Integer page, Integer pageSize, Class<E> beanClass){ |
632 | + int fromIndex = coreSql.toUpperCase().indexOf("FROM"); | |
633 | + String selectSql = ""; | |
634 | + String fromAndWhereSql = ""; | |
635 | + if(fromIndex > -1) { | |
636 | + selectSql = coreSql.substring(0, fromIndex); | |
637 | + fromAndWhereSql = coreSql.substring(fromIndex, coreSql.length()); | |
638 | + }else { | |
639 | + return UtilsSql.createPage(page, pageSize, 0, new ArrayList<Object>()); | |
640 | + } | |
641 | + return this.getPageData(selectSql, fromAndWhereSql, orderByPartSql, page, pageSize, beanClass); | |
642 | + } | |
643 | + | |
644 | + public <E> Map<String, Object> getPageData(String selectSql, String fromAndWhereSql, String orderByPartSql, Integer page, Integer pageSize, Class<E> beanClass){ | |
619 | 645 | //构造查询语句 |
620 | - String querySql = coreSql+orderByPartSql+UtilsSql.getLimitCondition(page, pageSize); | |
646 | + String querySql = selectSql+" "+fromAndWhereSql+" "+orderByPartSql+" "+UtilsSql.getLimitCondition(page, pageSize); | |
621 | 647 | |
622 | 648 | //构造统计计数语句 |
623 | - String countSql = "select count(*) rows from ("+coreSql+" ) t "; | |
649 | + String countSql = "select count(*) rows from ( select 1 "+fromAndWhereSql+" ) t "; | |
624 | 650 | |
625 | 651 | //执行查询 |
626 | 652 | List<E> queryData = new ArrayList<E>(); | ... | ... |