Commit 085176f3a6f75f5a780b62fdd4ac8346632fbc55
1 parent
460ec6a3
Exists in
master
and in
2 other branches
1.add find by class methods
Showing
2 changed files
with
184 additions
and
1 deletions
Show diff stats
build.gradle
| @@ -19,12 +19,15 @@ mainClassName = 'com.taover.repository.UtilsString' | @@ -19,12 +19,15 @@ mainClassName = 'com.taover.repository.UtilsString' | ||
| 19 | 19 | ||
| 20 | dependencies { | 20 | dependencies { |
| 21 | compile("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final") | 21 | compile("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final") |
| 22 | - compile('org.springframework:spring-jdbc:5.1.9.RELEAS') | 22 | + compile('org.springframework:spring-jdbc:5.1.9.RELEASE') |
| 23 | compile('mysql:mysql-connector-java:5.1.47') | 23 | compile('mysql:mysql-connector-java:5.1.47') |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | repositories { | 26 | repositories { |
| 27 | jcenter() | 27 | jcenter() |
| 28 | + maven{ url 'http://repository.sonatype.org/content/groups/public/' } | ||
| 29 | + maven{ url 'https://repository.jboss.org/nexus/content/groups/public/' } | ||
| 30 | + maven{ url 'http://47.93.122.69:9001/repository/maven-releases/' } | ||
| 28 | } | 31 | } |
| 29 | 32 | ||
| 30 | task sourcesJar(type: Jar, dependsOn: classes) { | 33 | task sourcesJar(type: Jar, dependsOn: classes) { |
src/main/java/com/taover/repository/CustomJdbcTemplate.java
| @@ -622,4 +622,184 @@ public class CustomJdbcTemplate<T, ID extends Serializable> { | @@ -622,4 +622,184 @@ public class CustomJdbcTemplate<T, ID extends Serializable> { | ||
| 622 | countData = this.jdbcTemplateRead.queryForMap(countSql); | 622 | countData = this.jdbcTemplateRead.queryForMap(countSql); |
| 623 | return UtilsSql.createPage(page, Integer.valueOf(countData.get("rows").toString()), queryData); | 623 | return UtilsSql.createPage(page, Integer.valueOf(countData.get("rows").toString()), queryData); |
| 624 | } | 624 | } |
| 625 | + | ||
| 626 | + | ||
| 627 | + /** | ||
| 628 | + * 按主键查询 | ||
| 629 | + */ | ||
| 630 | + public <E> E findBeanByID(ID id, Class<E> beanClass) { | ||
| 631 | + return findBeanByID(id, true, false, beanClass); | ||
| 632 | + } | ||
| 633 | + | ||
| 634 | + /** | ||
| 635 | + * 按主键查询 | ||
| 636 | + * isLock 是否锁定, 默认不锁 | ||
| 637 | + * fromWriteDB 是否从写库读写,默认从读库查询 | ||
| 638 | + */ | ||
| 639 | + public <E> E findBeanByID(ID id, boolean fromWriteDB, boolean isLock, Class<E> beanClass) { | ||
| 640 | + StringBuffer sql = new StringBuffer("SELECT "+this.tableFieldNameListGapWithComma+" FROM "+this.getTableSql()); | ||
| 641 | + StringBuffer pql = new StringBuffer(sql.toString()); | ||
| 642 | + sql.append(" WHERE "+idTableFieldName+" = ?"); | ||
| 643 | + pql.append(" WHERE "+idTableFieldName+" = " + id); | ||
| 644 | + if (isLock) { | ||
| 645 | + sql.append(" FOR UPDATE"); | ||
| 646 | + pql.append(" FOR UPDATE"); | ||
| 647 | + } | ||
| 648 | + return (E) (fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).queryForObject(sql.toString(), new CustomJdbcTemplateRowMapper(beanClass, this.tableToBeanField), id); | ||
| 649 | + } | ||
| 650 | + | ||
| 651 | + /** | ||
| 652 | + * 根据条件List<Object[]>查询 | ||
| 653 | + * Object[]数组长度是3 | ||
| 654 | + * Object[], 第一个参数是列名,第二个参数是操作符,第三个参数是查询条件的值。 | ||
| 655 | + */ | ||
| 656 | + public <E> E findBeanByCondition(List<Object[]> condition, Class<E> beanClass) throws Exception { | ||
| 657 | + List<E> tempList = findBeanListByCondition(condition, null, false, beanClass); | ||
| 658 | + if(tempList == null || tempList.size() == 0){ | ||
| 659 | + return null; | ||
| 660 | + } | ||
| 661 | + if(tempList != null && tempList.size() == 1){ | ||
| 662 | + return tempList.get(0); | ||
| 663 | + }else{ | ||
| 664 | + throw new Exception("数据库存在多条记录满足条件"); | ||
| 665 | + } | ||
| 666 | + } | ||
| 667 | + | ||
| 668 | + /** | ||
| 669 | + * 根据条件sql查询 | ||
| 670 | + * sqlCondition 为where 后面的条件。 | ||
| 671 | + */ | ||
| 672 | + public <E> E findBeanBySql(String sqlCondition, Class<E> beanClass) throws Exception{ | ||
| 673 | + List<E> tempList = findBeanListBySql(sqlCondition, false, beanClass); | ||
| 674 | + if(tempList == null || tempList.size() == 0){ | ||
| 675 | + return null; | ||
| 676 | + } | ||
| 677 | + if(tempList != null && tempList.size() == 1){ | ||
| 678 | + return tempList.get(0); | ||
| 679 | + }else{ | ||
| 680 | + throw new Exception("数据库存在多条记录满足条件"); | ||
| 681 | + } | ||
| 682 | + } | ||
| 683 | + | ||
| 684 | + /** | ||
| 685 | + * 根据条件List<Object[]>查询 | ||
| 686 | + * Object[]数组长度是3 | ||
| 687 | + * Object[], 第一个参数是列名,第二个参数是操作符,第三个参数是查询条件的值。 | ||
| 688 | + */ | ||
| 689 | + public <E> List<E> findBeanListByCondition(List<Object[]> condition, Class<E> beanClass) { | ||
| 690 | + return findBeanListByCondition(condition, null, false, beanClass); | ||
| 691 | + } | ||
| 692 | + | ||
| 693 | + /** | ||
| 694 | + * 根据条件List<Object[]>查询 | ||
| 695 | + * Object[]数组长度是3 | ||
| 696 | + * Object[], 第一个参数是列名,第二个参数是操作符,第三个参数是查询条件的值。 | ||
| 697 | + */ | ||
| 698 | + public <E> List<E> findBeanListByCondition(List<Object[]> condition, String sortCondition, boolean fromWriteDB, Class<E> beanClass) { | ||
| 699 | + StringBuffer sql = new StringBuffer("SELECT "+this.tableFieldNameListGapWithComma+" FROM "+this.getTableSql()); | ||
| 700 | + StringBuffer pql = new StringBuffer(sql.toString()); | ||
| 701 | + List<Object> list = new ArrayList<Object>(); | ||
| 702 | + this.appendWhereCondition(sql, pql, list, condition); | ||
| 703 | + if(sortCondition != null && !sortCondition.equals("")){ | ||
| 704 | + sql.append(" " + sortCondition + " "); | ||
| 705 | + pql.append(" " + sortCondition + " "); | ||
| 706 | + } | ||
| 707 | + return (List<E>)(fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).query(sql.toString(), new CustomJdbcTemplateRowMapper(beanClass, this.tableToBeanField), list.toArray()); | ||
| 708 | + } | ||
| 709 | + | ||
| 710 | + /** | ||
| 711 | + * 根据条件sql查询 | ||
| 712 | + * sqlCondition 为where 后面的条件。 | ||
| 713 | + */ | ||
| 714 | + public <E> List<E> findBeanListBySql(String sqlCondition, Class<E> beanClass) { | ||
| 715 | + return findBeanListBySql(sqlCondition, false, beanClass); | ||
| 716 | + } | ||
| 717 | + | ||
| 718 | + /** | ||
| 719 | + * 根据条件sql查询 | ||
| 720 | + * sqlCondition 为where 后面的条件。 | ||
| 721 | + */ | ||
| 722 | + public <E> List<E> findBeanListBySql(String sqlCondition, boolean fromWriteDB, Class<E> beanClass) { | ||
| 723 | + StringBuffer sql = new StringBuffer("SELECT "+this.tableFieldNameListGapWithComma+" FROM "+this.getTableSql()+" WHERE " + sqlCondition); | ||
| 724 | + return (List<E>)(fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).query(sql.toString(), new CustomJdbcTemplateRowMapper(beanClass, this.tableToBeanField)); | ||
| 725 | + } | ||
| 726 | + | ||
| 727 | + /** | ||
| 728 | + * 按条件分页查询 | ||
| 729 | + * Object[]数组长度是3 | ||
| 730 | + * Object[], 第一个参数是列名,第二个参数是操作符,第三个参数是查询条件的值。 | ||
| 731 | + */ | ||
| 732 | + public <E> Map<String, Object> findBeanPageByCondition(List<Object[]> condition, int page, int pageSize, Class<E> beanClass) { | ||
| 733 | + return findBeanPageByCondition(condition, null , page, pageSize, false, beanClass); | ||
| 734 | + } | ||
| 735 | + | ||
| 736 | + /** | ||
| 737 | + * 按条件分页查询 | ||
| 738 | + * Object[]数组长度是3 | ||
| 739 | + * Object[]第一个参数是列名,第二个参数是操作符,第三个参数是查询条件的值。 | ||
| 740 | + * boolean isUseCache, 是否用缓存,默认用。 | ||
| 741 | + * boolean isAddCache, 是否添加缓存,默认添加。 | ||
| 742 | + */ | ||
| 743 | + public <E> Map<String, Object> findBeanPageByCondition(List<Object[]> condition,String sortCondition, int page, int pageSize, boolean fromWriteDB, Class<E> beanClass) { | ||
| 744 | + StringBuffer sql = new StringBuffer("SELECT "+this.tableFieldNameListGapWithComma+" FROM "+this.getTableSql()); | ||
| 745 | + StringBuffer pql = new StringBuffer(sql.toString()); | ||
| 746 | + StringBuffer sqlCount = new StringBuffer("SELECT COUNT(1) rowCount FROM "+this.getTableSql()); | ||
| 747 | + | ||
| 748 | + List<Object> count_list = new ArrayList<Object>(); | ||
| 749 | + List<Object> page_list = new ArrayList<Object>(); | ||
| 750 | + this.appendWhereConditionForCount(sqlCount, condition); | ||
| 751 | + this.appendWhereCondition(sql, pql, count_list, condition); | ||
| 752 | + for (int i = 0; i < count_list.size(); i++) | ||
| 753 | + page_list.add(count_list.get(i)); | ||
| 754 | + | ||
| 755 | + page_list.add((page - 1) * pageSize); | ||
| 756 | + page_list.add(pageSize); | ||
| 757 | + | ||
| 758 | + if(sortCondition != null && !sortCondition.equals("")){ | ||
| 759 | + sql.append(" " + sortCondition + " "); | ||
| 760 | + pql.append(" " + sortCondition + " "); | ||
| 761 | + } | ||
| 762 | + | ||
| 763 | + String pageSql = sql.toString() + " limit ?, ?"; | ||
| 764 | + | ||
| 765 | + Map<String, Object> totalRowsMap = (fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).queryForMap(sqlCount.toString(), count_list.toArray()) ; | ||
| 766 | + | ||
| 767 | + Map<String, Object> resultMap = new HashMap<String, Object>(); | ||
| 768 | + resultMap.put("page", page); | ||
| 769 | + resultMap.put("total", totalRowsMap.get("rowCount")); | ||
| 770 | + List<E> resultList = null; | ||
| 771 | + resultList = (fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).query(pageSql.toString(), new CustomJdbcTemplateRowMapper(beanClass, this.tableToBeanField), page_list.toArray()); | ||
| 772 | + resultMap.put("rows", resultList); | ||
| 773 | + return resultMap; | ||
| 774 | + } | ||
| 775 | + | ||
| 776 | + /** | ||
| 777 | + * 按sql分页查询, sqlCondition为where 后条件sql | ||
| 778 | + */ | ||
| 779 | + public <E> Map<String, Object> findBeanPageBySql(String sqlCondition, int page, int pageSize, Class<E> beanClass) { | ||
| 780 | + return findBeanPageBySql(sqlCondition, page, pageSize, false, beanClass); | ||
| 781 | + } | ||
| 782 | + | ||
| 783 | + /** | ||
| 784 | + * 按sql分页查询, sqlCondition为where 后条件sql | ||
| 785 | + */ | ||
| 786 | + public <E> Map<String, Object> findBeanPageBySql(String sqlCondition, int page, int pageSize,boolean fromWriteDB, Class<E> beanClass) { | ||
| 787 | + StringBuffer sql = new StringBuffer("SELECT "+this.tableFieldNameListGapWithComma+" FROM "+this.getTableSql()+" WHERE " + sqlCondition ); | ||
| 788 | + StringBuffer sqlCount = new StringBuffer("SELECT count(1) rowCount FROM "+this.getTableSql()+" WHERE " + sqlCondition); | ||
| 789 | + String pageSql = sql.toString() + " limit ?, ?"; | ||
| 790 | + String pagePql = sql.toString() + " limit " + ((page -1) * pageSize) + ", " + (page * pageSize); | ||
| 791 | + List<Object> page_list = new ArrayList<Object>(); | ||
| 792 | + page_list.add((page - 1) * pageSize); | ||
| 793 | + page_list.add(page * pageSize); | ||
| 794 | + | ||
| 795 | + Map<String, Object> totalRowsMap = (fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).queryForMap(sqlCount.toString()); | ||
| 796 | + | ||
| 797 | + Map<String, Object> resultMap = new HashMap<String, Object>(); | ||
| 798 | + resultMap.put("page", page); | ||
| 799 | + resultMap.put("total", totalRowsMap.get("rowCount")); | ||
| 800 | + List<E> resultList = null; | ||
| 801 | + resultList = (fromWriteDB ? jdbcTemplateWrite : jdbcTemplateRead).query(pageSql.toString(), new CustomJdbcTemplateRowMapper(beanClass, this.tableToBeanField), page_list.toArray()); | ||
| 802 | + resultMap.put("rows", resultList); | ||
| 803 | + return resultMap; | ||
| 804 | + } | ||
| 625 | } | 805 | } |