Commit 5212255525771956718eabdda63858a358caeede
1 parent
d7fc41cc
Exists in
master
add support update by id list
Showing
7 changed files
with
64 additions
and
9 deletions
Show diff stats
build.gradle
@@ -56,7 +56,7 @@ uploadArchives { | @@ -56,7 +56,7 @@ uploadArchives { | ||
56 | authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) | 56 | authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) |
57 | } | 57 | } |
58 | pom.project { | 58 | pom.project { |
59 | - version '2.3.2' | 59 | + version '2.3.4' |
60 | artifactId ARTIFACT_Id | 60 | artifactId ARTIFACT_Id |
61 | groupId GROUP_ID | 61 | groupId GROUP_ID |
62 | packaging TYPE | 62 | packaging TYPE |
src/main/java/com/taover/repository/CustomJdbcTemplateWrapperTenant.java
@@ -555,6 +555,43 @@ public class CustomJdbcTemplateWrapperTenant<T, ID extends Number> implements Cu | @@ -555,6 +555,43 @@ public class CustomJdbcTemplateWrapperTenant<T, ID extends Number> implements Cu | ||
555 | list.add(id); | 555 | list.add(id); |
556 | return _jdbcTemplateWrapperTenant.update(updateSql, shardingKey, list.toArray()); | 556 | return _jdbcTemplateWrapperTenant.update(updateSql, shardingKey, list.toArray()); |
557 | } | 557 | } |
558 | + | ||
559 | + @Override | ||
560 | + public void updateEntityByIdList(List<Object[]> changeList, List<ID> idList, Long shardingKey) { | ||
561 | + if(null == idList){ | ||
562 | + throw new RuntimeException("params[idList] is null"); | ||
563 | + } | ||
564 | + if (null == changeList || changeList.size() == 0) { | ||
565 | + throw new RuntimeException("params[changeList] is empty"); | ||
566 | + } | ||
567 | + | ||
568 | + StringBuffer sql = new StringBuffer("UPDATE "+this.getTableSql()+" SET"); | ||
569 | + StringBuffer pql = new StringBuffer(sql.toString()); | ||
570 | + List<Object> list = new ArrayList<Object>(); | ||
571 | + this.appendSetSql(sql, pql, list, changeList); | ||
572 | + String updateAndFromSql = sql.substring(0, sql.length()-1); | ||
573 | + | ||
574 | + int idIndex = 0; | ||
575 | + int idListSize = idList.size(); | ||
576 | + StringBuffer idSb = new StringBuffer(); | ||
577 | + while(idIndex < idListSize) { | ||
578 | + idSb.append(idList.get(idIndex)+","); | ||
579 | + ++idIndex; | ||
580 | + | ||
581 | + //满100条则向mysql发送更新请求 | ||
582 | + if(idIndex%100 == 0) { | ||
583 | + String whereSql = " WHERE "+this.appendWhereSqlWithShardingCondition(this._idTableFieldName+" in ("+idSb.toString().substring(0, idSb.length()-1)+") ", shardingKey); | ||
584 | + this._jdbcTemplateWrapperTenant.update(updateAndFromSql+whereSql, shardingKey, list.toArray()); | ||
585 | + idSb.setLength(0); | ||
586 | + } | ||
587 | + } | ||
588 | + | ||
589 | + //是否剩余id列表 | ||
590 | + if(idSb.length() > 0) { | ||
591 | + String whereSql = " WHERE "+this.appendWhereSqlWithShardingCondition(this._idTableFieldName+" in ("+idSb.toString().substring(0, idSb.length()-1)+") ", shardingKey); | ||
592 | + this._jdbcTemplateWrapperTenant.update(updateAndFromSql+whereSql, shardingKey, list.toArray()); | ||
593 | + } | ||
594 | + } | ||
558 | 595 | ||
559 | @Override | 596 | @Override |
560 | public int updateEntityByCondition(List<Object[]> updateObj, List<Object[]> condition, Long shardingKey){ | 597 | public int updateEntityByCondition(List<Object[]> updateObj, List<Object[]> condition, Long shardingKey){ |
src/main/java/com/taover/repository/CustomJdbcTemplateWrapperTenantInterface.java
@@ -115,6 +115,15 @@ public interface CustomJdbcTemplateWrapperTenantInterface<T, ID extends Number> | @@ -115,6 +115,15 @@ public interface CustomJdbcTemplateWrapperTenantInterface<T, ID extends Number> | ||
115 | * 根据ID修改指定的值 | 115 | * 根据ID修改指定的值 |
116 | */ | 116 | */ |
117 | public int updateEntityById(List<Object[]> changeList, ID id, Long tenantId); | 117 | public int updateEntityById(List<Object[]> changeList, ID id, Long tenantId); |
118 | + | ||
119 | + /** | ||
120 | + * 根据ID列表修改指定数据 | ||
121 | + * @param changeList | ||
122 | + * @param idList | ||
123 | + * @param tenantId | ||
124 | + * @return | ||
125 | + */ | ||
126 | + public void updateEntityByIdList(List<Object[]> changeList, List<ID> idList, Long tenantId); | ||
118 | 127 | ||
119 | /** | 128 | /** |
120 | * List<Object[]> updateObj 要修改成的值,数组长度为2,第一个值为列名,第二个值是要改成的值。 | 129 | * List<Object[]> updateObj 要修改成的值,数组长度为2,第一个值为列名,第二个值是要改成的值。 |
src/main/java/com/taover/repository/exception/NotFoundException.java
1 | package com.taover.repository.exception; | 1 | package com.taover.repository.exception; |
2 | 2 | ||
3 | public class NotFoundException extends Exception { | 3 | public class NotFoundException extends Exception { |
4 | - private Exception originError; | ||
5 | - | 4 | + private static final long serialVersionUID = 1L; |
5 | + | ||
6 | public NotFoundException() {} | 6 | public NotFoundException() {} |
7 | 7 | ||
8 | public NotFoundException(Exception e) { | 8 | public NotFoundException(Exception e) { |
9 | - this.originError = e; | 9 | + super(e); |
10 | } | 10 | } |
11 | } | 11 | } |
src/main/java/com/taover/repository/exception/SqlParsePagerException.java
1 | package com.taover.repository.exception; | 1 | package com.taover.repository.exception; |
2 | 2 | ||
3 | public class SqlParsePagerException extends RuntimeException{ | 3 | public class SqlParsePagerException extends RuntimeException{ |
4 | - private String msg = null; | ||
5 | - | 4 | + private static final long serialVersionUID = 1L; |
5 | + | ||
6 | public SqlParsePagerException(String msg) { | 6 | public SqlParsePagerException(String msg) { |
7 | - this.msg = msg; | 7 | + super(msg); |
8 | } | 8 | } |
9 | 9 | ||
10 | } | 10 | } |
src/test/java/com/taover/repository/test/TestMapper.java
1 | package com.taover.repository.test; | 1 | package com.taover.repository.test; |
2 | 2 | ||
3 | +import java.util.ArrayList; | ||
4 | +import java.util.List; | ||
3 | import java.util.Properties; | 5 | import java.util.Properties; |
4 | 6 | ||
5 | import javax.sql.DataSource; | 7 | import javax.sql.DataSource; |
@@ -25,7 +27,14 @@ public class TestMapper { | @@ -25,7 +27,14 @@ public class TestMapper { | ||
25 | JdbcTemplateWrapperTenant template = new JdbcTemplateWrapperTenantImpl(new JdbcTemplate(ds)); | 27 | JdbcTemplateWrapperTenant template = new JdbcTemplateWrapperTenantImpl(new JdbcTemplate(ds)); |
26 | //System.out.println(template.queryForObject("select count(*) from wxorder_order", Integer.class)); | 28 | //System.out.println(template.queryForObject("select count(*) from wxorder_order", Integer.class)); |
27 | CommonRegionRepository repo = new CommonRegionRepository(template); | 29 | CommonRegionRepository repo = new CommonRegionRepository(template); |
28 | - System.out.println(repo.findListBySql("1=1", 1L)); | 30 | + //System.out.println(repo.findListBySql("1=1", 1L)); |
31 | + List<Object[]> changeList = new ArrayList<Object[]>(); | ||
32 | + changeList.add(new Object[] {"large_area", "1"}); | ||
33 | + List<Long> data = new ArrayList<Long>(); | ||
34 | + data.add(12L); | ||
35 | + data.add(14L); | ||
36 | + data.add(33L); | ||
37 | + repo.updateEntityByIdList(changeList, data, null); | ||
29 | } catch (Exception e) { | 38 | } catch (Exception e) { |
30 | // TODO Auto-generated catch block | 39 | // TODO Auto-generated catch block |
31 | e.printStackTrace(); | 40 | e.printStackTrace(); |
src/test/java/com/taover/repository/test/repository/CommonRegionEntity.java
@@ -16,7 +16,7 @@ import com.taover.repository.annotation.TableShardingType; | @@ -16,7 +16,7 @@ import com.taover.repository.annotation.TableShardingType; | ||
16 | */ | 16 | */ |
17 | @Entity | 17 | @Entity |
18 | @Table(name="common_region", catalog="") | 18 | @Table(name="common_region", catalog="") |
19 | -@TableSharding(type=TableShardingType.MULTI_DB_MULTI_TABLE, column="id") | 19 | +//@TableSharding(type=TableShardingType.MULTI_DB_MULTI_TABLE, column="id") |
20 | public class CommonRegionEntity implements Serializable { | 20 | public class CommonRegionEntity implements Serializable { |
21 | 21 | ||
22 | private static final long serialVersionUID = 1L; | 22 | private static final long serialVersionUID = 1L; |