From 9a969523f4d3b8cf947586f4752a64b4cffb6b28 Mon Sep 17 00:00:00 2001 From: wangxiaoyan Date: Tue, 28 Nov 2023 19:25:33 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9xxxByIds=E7=B3=BB?= =?UTF-8?q?=E5=88=97=E7=9A=84=E6=8E=A5=E5=8F=A3=E4=B8=ADids=E5=BD=A2?= =?UTF-8?q?=E5=8F=82=E4=B8=BA=E6=B3=9B=E5=9E=8B=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=E5=8D=8F=E5=8F=98=E4=B8=8B=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=AD=A4=E6=8E=A5=E5=8F=A3=E8=BF=98=E9=9C=80=E8=A6=81=E5=86=8D?= =?UTF-8?q?=E8=BD=AC=E4=B8=80=E6=AC=A1=E6=B3=9B=E5=9E=8B=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interfaces/Inject/InjectQuery.java | 8 ++++---- .../com/anwen/mongo/execute/SqlExecute.java | 20 +++++++++---------- .../mongo/mapper/MongoPlusMapMapper.java | 8 ++++---- .../mongo/operate/DefaultSqlOperateImpl.java | 18 ++++++++--------- .../com/anwen/mongo/operate/SqlOperate.java | 18 ++++++++--------- .../com/anwen/mongo/service/IService.java | 8 ++++---- .../anwen/mongo/service/impl/ServiceImpl.java | 8 ++++---- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Inject/InjectQuery.java b/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Inject/InjectQuery.java index fb72b53..43066d9 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Inject/InjectQuery.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Inject/InjectQuery.java @@ -46,9 +46,9 @@ public interface InjectQuery extends CommInjectQuery { Map getById(ClientSession clientSession,String collectionName ,Serializable id); - List> getByIds(String collectionName , Collection ids); + List> getByIds(String collectionName , Collection ids); - List> getByIds(ClientSession clientSession,String collectionName , Collection ids); + List> getByIds(ClientSession clientSession,String collectionName , Collection ids); /** * 添加 @@ -243,7 +243,7 @@ public interface InjectQuery extends CommInjectQuery { * @author JiaChaoYang * @since 2023/2/9 13:59 */ - Boolean removeBatchByIds(String collectionName,Collection idList); + Boolean removeBatchByIds(String collectionName,Collection idList); /** * 根据id批量删除 @@ -253,7 +253,7 @@ public interface InjectQuery extends CommInjectQuery { * @author JiaChaoYang * @since 2023/2/9 13:59 */ - Boolean removeBatchByIds(ClientSession clientSession,String collectionName,Collection idList); + Boolean removeBatchByIds(ClientSession clientSession,String collectionName,Collection idList); /** * 获取单个,返回T类型的对象 diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/execute/SqlExecute.java b/mongo-plus-core/src/main/java/com/anwen/mongo/execute/SqlExecute.java index 67171d6..afe3000 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/execute/SqlExecute.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/execute/SqlExecute.java @@ -415,23 +415,23 @@ public class SqlExecute { } - public Boolean doRemoveBatchByIds(Collection idList,Class clazz) { + public Boolean doRemoveBatchByIds(Collection idList,Class clazz) { return doRemoveBatchByIds(MongoTransactionContext.getClientSessionContext(),idList,clazz); } - public Boolean doRemoveBatchByIds(ClientSession clientSession,Collection idList,Class clazz) { + public Boolean doRemoveBatchByIds(ClientSession clientSession,Collection idList,Class clazz) { return executeRemoveBatchByIds(clientSession,idList,getCollection(clazz)); } - public Boolean doRemoveBatchByIds(String collectionName,Collection idList) { + public Boolean doRemoveBatchByIds(String collectionName,Collection idList) { return doRemoveBatchByIds(MongoTransactionContext.getClientSessionContext(),collectionName,idList); } - public Boolean doRemoveBatchByIds(ClientSession clientSession,String collectionName,Collection idList) { + public Boolean doRemoveBatchByIds(ClientSession clientSession,String collectionName,Collection idList) { return executeRemoveBatchByIds(clientSession,idList,getCollection(collectionName)); } - public Boolean executeRemoveBatchByIds(ClientSession clientSession,Collection idList,MongoCollection collection){ + public Boolean executeRemoveBatchByIds(ClientSession clientSession,Collection idList,MongoCollection collection){ List convertedIds = idList.stream() .map(id -> ObjectId.isValid(String.valueOf(id)) ? new ObjectId(String.valueOf(id)) : id) .collect(Collectors.toList()); @@ -520,11 +520,11 @@ public class SqlExecute { return Optional.ofNullable(clientSession).map(session -> collection.find(session,queryBasic)).orElseGet(() -> collection.find(queryBasic)).first(); } - public List> doGetByIds(String collectionName, Collection ids) { + public List> doGetByIds(String collectionName, Collection ids) { return doGetByIds(null,collectionName,ids); } - public List> doGetByIds(ClientSession clientSession,String collectionName, Collection ids) { + public List> doGetByIds(ClientSession clientSession,String collectionName, Collection ids) { BasicDBObject basicDBObject = checkIdType(ids); MongoCollection collection = getCollection(collectionName); return Converter.convertDocumentToMap(Optional.ofNullable(clientSession).map(session -> collection.find(session,basicDBObject,Map.class)).orElseGet(() -> collection.find(basicDBObject,Map.class))); @@ -600,11 +600,11 @@ public class SqlExecute { return Optional.ofNullable(clientSession).map(session -> collection.countDocuments(session,queryBasic)).orElseGet(() -> collection.countDocuments(queryBasic)) >= 1; } - public List doGetByIds(Collection ids,Class clazz) { + public List doGetByIds(Collection ids,Class clazz) { return doGetByIds(MongoTransactionContext.getClientSessionContext(),ids,clazz); } - public List doGetByIds(ClientSession clientSession,Collection ids,Class clazz) { + public List doGetByIds(ClientSession clientSession,Collection ids,Class clazz) { MongoCollection collection = getCollection(clazz); BasicDBObject basicDBObject = checkIdType(ids); return DocumentMapperConvert.mapDocumentList(Optional.ofNullable(clientSession).map(session -> collection.find(session,basicDBObject)).orElseGet(() -> collection.find(basicDBObject)), clazz); @@ -656,7 +656,7 @@ public class SqlExecute { return Converter.convertDocumentToMap(Optional.ofNullable(clientSession).map(session -> collection.find(session,basicDBObject,Map.class)).orElseGet(() -> collection.find(basicDBObject,Map.class))); } - private BasicDBObject checkIdType(Collection ids) { + private BasicDBObject checkIdType(Collection ids) { List convertedIds = ids.stream() .map(id -> ObjectId.isValid(String.valueOf(id)) ? new ObjectId(String.valueOf(id)) : id) .collect(Collectors.toList()); diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/mapper/MongoPlusMapMapper.java b/mongo-plus-core/src/main/java/com/anwen/mongo/mapper/MongoPlusMapMapper.java index fa13d6c..49d9e9e 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/mapper/MongoPlusMapMapper.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/mapper/MongoPlusMapMapper.java @@ -159,12 +159,12 @@ public class MongoPlusMapMapper implements InjectQuery { } @Override - public List> getByIds(String collectionName , Collection ids) { + public List> getByIds(String collectionName , Collection ids) { return sqlExecute.doGetByIds(collectionName,ids); } @Override - public List> getByIds(ClientSession clientSession, String collectionName, Collection ids) { + public List> getByIds(ClientSession clientSession, String collectionName, Collection ids) { return sqlExecute.doGetByIds(clientSession,collectionName,ids); } @@ -259,12 +259,12 @@ public class MongoPlusMapMapper implements InjectQuery { } @Override - public Boolean removeBatchByIds(String collectionName, Collection idList) { + public Boolean removeBatchByIds(String collectionName, Collection idList) { return sqlExecute.doRemoveBatchByIds(collectionName,idList); } @Override - public Boolean removeBatchByIds(ClientSession clientSession, String collectionName, Collection idList) { + public Boolean removeBatchByIds(ClientSession clientSession, String collectionName, Collection idList) { return sqlExecute.doRemoveBatchByIds(clientSession,collectionName,idList); } diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/operate/DefaultSqlOperateImpl.java b/mongo-plus-core/src/main/java/com/anwen/mongo/operate/DefaultSqlOperateImpl.java index f11de76..6ae5c63 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/operate/DefaultSqlOperateImpl.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/operate/DefaultSqlOperateImpl.java @@ -225,27 +225,27 @@ public class DefaultSqlOperateImpl implements SqlOperate { } @Override - public Boolean doRemoveBatchByIds(Collection idList, Class clazz) { + public Boolean doRemoveBatchByIds(Collection idList, Class clazz) { return null; } @Override - public Boolean doRemoveBatchByIds(ClientSession clientSession, Collection idList, Class clazz) { + public Boolean doRemoveBatchByIds(ClientSession clientSession, Collection idList, Class clazz) { return null; } @Override - public Boolean doRemoveBatchByIds(String collectionName, Collection idList) { + public Boolean doRemoveBatchByIds(String collectionName, Collection idList) { return null; } @Override - public Boolean doRemoveBatchByIds(ClientSession clientSession, String collectionName, Collection idList) { + public Boolean doRemoveBatchByIds(ClientSession clientSession, String collectionName, Collection idList) { return null; } @Override - public Boolean executeRemoveBatchByIds(ClientSession clientSession, Collection idList, MongoCollection collection) { + public Boolean executeRemoveBatchByIds(ClientSession clientSession, Collection idList, MongoCollection collection) { return null; } @@ -330,12 +330,12 @@ public class DefaultSqlOperateImpl implements SqlOperate { } @Override - public List> doGetByIds(String collectionName, Collection ids) { + public List> doGetByIds(String collectionName, Collection ids) { return null; } @Override - public List> doGetByIds(ClientSession clientSession, String collectionName, Collection ids) { + public List> doGetByIds(ClientSession clientSession, String collectionName, Collection ids) { return null; } @@ -410,12 +410,12 @@ public class DefaultSqlOperateImpl implements SqlOperate { } @Override - public List doGetByIds(Collection ids, Class clazz) { + public List doGetByIds(Collection ids, Class clazz) { return null; } @Override - public List doGetByIds(ClientSession clientSession, Collection ids, Class clazz) { + public List doGetByIds(ClientSession clientSession, Collection ids, Class clazz) { return null; } diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/operate/SqlOperate.java b/mongo-plus-core/src/main/java/com/anwen/mongo/operate/SqlOperate.java index 360c56c..9e6d885 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/operate/SqlOperate.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/operate/SqlOperate.java @@ -108,15 +108,15 @@ public interface SqlOperate { Boolean doRemoveByColumn(ClientSession clientSession,String collectionName,String column, String value); - Boolean doRemoveBatchByIds(Collection idList,Class clazz); + Boolean doRemoveBatchByIds(Collection idList,Class clazz); - Boolean doRemoveBatchByIds(ClientSession clientSession,Collection idList,Class clazz); + Boolean doRemoveBatchByIds(ClientSession clientSession,Collection idList,Class clazz); - Boolean doRemoveBatchByIds(String collectionName,Collection idList); + Boolean doRemoveBatchByIds(String collectionName,Collection idList); - Boolean doRemoveBatchByIds(ClientSession clientSession,String collectionName,Collection idList); + Boolean doRemoveBatchByIds(ClientSession clientSession,String collectionName,Collection idList); - Boolean executeRemoveBatchByIds(ClientSession clientSession,Collection idList,MongoCollection collection); + Boolean executeRemoveBatchByIds(ClientSession clientSession,Collection idList,MongoCollection collection); List doList(Class clazz); @@ -150,8 +150,8 @@ public interface SqlOperate { Map doGetById(ClientSession clientSession,String collectionName, Serializable id); - List> doGetByIds(String collectionName, Collection ids); - List> doGetByIds(ClientSession clientSession,String collectionName, Collection ids); + List> doGetByIds(String collectionName, Collection ids); + List> doGetByIds(ClientSession clientSession,String collectionName, Collection ids); List doList(List compareConditionList, List orderList,List projectionList,List basicDBObjectList,Class clazz); List doList(ClientSession clientSession,List compareConditionList, List orderList,List projectionList,List basicDBObjectList,Class clazz); T doOne(List compareConditionList,List projectionList,List basicDBObjectList,Class clazz); @@ -177,9 +177,9 @@ public interface SqlOperate { boolean doIsExistMap(ClientSession clientSession,String collectionName, Serializable id); - List doGetByIds(Collection ids,Class clazz); + List doGetByIds(Collection ids,Class clazz); - List doGetByIds(ClientSession clientSession,Collection ids,Class clazz); + List doGetByIds(ClientSession clientSession,Collection ids,Class clazz); Boolean doUpdate(List compareConditionList,Class clazz); diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/service/IService.java b/mongo-plus-core/src/main/java/com/anwen/mongo/service/IService.java index df478a7..cf6b85a 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/service/IService.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/service/IService.java @@ -249,7 +249,7 @@ public interface IService { * @author JiaChaoYang * @since 2023/2/9 13:59 */ - Boolean removeBatchByIds(Collection idList); + Boolean removeBatchByIds(Collection idList); /** * 根据id批量删除 @@ -258,7 +258,7 @@ public interface IService { * @author JiaChaoYang * @since 2023/2/9 13:59 */ - Boolean removeBatchByIds(ClientSession clientSession,Collection idList); + Boolean removeBatchByIds(ClientSession clientSession,Collection idList); /** * 查询所有 @@ -382,9 +382,9 @@ public interface IService { */ T getById(ClientSession clientSession,Serializable id); - List getByIds(Collection ids); + List getByIds(Collection ids); - List getByIds(ClientSession clientSession,Collection ids); + List getByIds(ClientSession clientSession,Collection ids); /** * 查询sql,传入值为json,如{eq:XXX} diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/service/impl/ServiceImpl.java b/mongo-plus-core/src/main/java/com/anwen/mongo/service/impl/ServiceImpl.java index 35bda89..a675b69 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/service/impl/ServiceImpl.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/service/impl/ServiceImpl.java @@ -212,12 +212,12 @@ public class ServiceImpl implements IService{ } @Override - public Boolean removeBatchByIds(Collection idList) { + public Boolean removeBatchByIds(Collection idList) { return sqlExecute.doRemoveBatchByIds(idList,clazz); } @Override - public Boolean removeBatchByIds(ClientSession clientSession, Collection idList) { + public Boolean removeBatchByIds(ClientSession clientSession, Collection idList) { return sqlExecute.doRemoveBatchByIds(clientSession,idList,clazz); } @@ -352,12 +352,12 @@ public class ServiceImpl implements IService{ } @Override - public List getByIds(Collection ids) { + public List getByIds(Collection ids) { return sqlExecute.doGetByIds(ids,clazz); } @Override - public List getByIds(ClientSession clientSession, Collection ids) { + public List getByIds(ClientSession clientSession, Collection ids) { return sqlExecute.doGetByIds(clientSession,ids,clazz); } -- Gitee From 62a6a91458b0c983700ec071b63153a8d5681a92 Mon Sep 17 00:00:00 2001 From: wangxiaoyan Date: Tue, 28 Nov 2023 19:38:23 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8DupdateById=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=95=B0=E6=8D=AE=E5=BA=93=E5=91=BD=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=A4=9A=E4=B8=80=E4=B8=AAid=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=88=E5=AD=97=E6=AE=B5=E5=90=8D=E5=85=B7=E4=BD=93?= =?UTF-8?q?=E4=B8=BAID=E6=B3=A8=E8=A7=A3=E4=BF=AE=E9=A5=B0=E7=9A=84java?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=90=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/anwen/mongo/toolkit/DocumentUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/DocumentUtil.java b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/DocumentUtil.java index 597e214..7edf5e2 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/DocumentUtil.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/DocumentUtil.java @@ -126,6 +126,7 @@ public class DocumentUtil { //手动设置id值,永远优先 if (fieldValue != null){ resultMap.put(SqlOperationConstant._ID,fieldValue); + continue; } if (isSave && !idAnnotation.saveField()) { continue; -- Gitee From 8b2912d5ace71038548dac39ef1e0384f0dec41e Mon Sep 17 00:00:00 2001 From: wangxiaoyan Date: Thu, 7 Dec 2023 21:24:57 +0800 Subject: [PATCH 3/4] =?UTF-8?q?Compare=E7=B1=BB=E7=9A=84in()=E3=80=81.nin(?= =?UTF-8?q?)=E7=9A=84=E5=8F=82=E6=95=B0=E4=BD=BF=E7=94=A8=E6=B3=9B?= =?UTF-8?q?=E5=9E=8B=E9=80=9A=E9=85=8D=E7=AC=A6=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=97=B6=E9=9C=80=E8=A6=81=E5=8C=85=E4=B8=80?= =?UTF-8?q?=E5=B1=82=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mongo/conditions/AbstractChainWrapper.java | 16 ++++++++-------- .../mongo/conditions/interfaces/Compare.java | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/AbstractChainWrapper.java b/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/AbstractChainWrapper.java index 937ac9a..d3125ca 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/AbstractChainWrapper.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/AbstractChainWrapper.java @@ -215,42 +215,42 @@ public class AbstractChainWrapper column, Collection valueList) { + public Children in(boolean condition, SFunction column, Collection valueList) { return condition ? in(column,valueList) : typedThis; } @Override - public Children in(SFunction column, Collection valueList) { + public Children in(SFunction column, Collection valueList) { return getBaseCondition(column,valueList); } @Override - public Children in(boolean condition, String column, Collection valueList) { + public Children in(boolean condition, String column, Collection valueList) { return condition ? in(column,valueList) : typedThis; } @Override - public Children in(String column, Collection valueList) { + public Children in(String column, Collection valueList) { return getBaseCondition(column,valueList); } @Override - public Children nin(boolean condition, SFunction column, Collection valueList) { + public Children nin(boolean condition, SFunction column, Collection valueList) { return condition ? nin(column,valueList) : typedThis; } @Override - public Children nin(SFunction column, Collection valueList) { + public Children nin(SFunction column, Collection valueList) { return getBaseCondition(column,valueList); } @Override - public Children nin(boolean condition, String column, Collection valueList) { + public Children nin(boolean condition, String column, Collection valueList) { return condition ? nin(column,valueList) : typedThis; } @Override - public Children nin(String column, Collection valueList) { + public Children nin(String column, Collection valueList) { return getBaseCondition(column,valueList); } diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Compare.java b/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Compare.java index 3bff84a..66668e5 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Compare.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/conditions/interfaces/Compare.java @@ -320,7 +320,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/6/20/020 */ - Children in(boolean condition, SFunction column, Collection valueList); + Children in(boolean condition, SFunction column, Collection valueList); /** * 多值查询 @@ -330,7 +330,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/6/20/020 */ - Children in(SFunction column, Collection valueList); + Children in(SFunction column, Collection valueList); /** * 多值查询 @@ -341,7 +341,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/6/20/020 */ - Children in(boolean condition, String column, Collection valueList); + Children in(boolean condition, String column, Collection valueList); /** * 多值查询 @@ -351,7 +351,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/6/20/020 */ - Children in(String column, Collection valueList); + Children in(String column, Collection valueList); /** * 不包含 @@ -362,7 +362,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/7/15 15:57 */ - Children nin(boolean condition , SFunction column , Collection valueList); + Children nin(boolean condition , SFunction column , Collection valueList); /** * 不包含 @@ -372,7 +372,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/7/15 15:57 */ - Children nin(SFunction column , Collection valueList); + Children nin(SFunction column , Collection valueList); /** * 不包含 @@ -383,7 +383,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/7/15 15:58 */ - Children nin(boolean condition , String column , Collection valueList); + Children nin(boolean condition , String column , Collection valueList); /** * 不包含 @@ -393,7 +393,7 @@ public interface Compare extends Serializable { * @author JiaChaoYang * @date 2023/7/15 15:58 */ - Children nin(String column , Collection valueList); + Children nin(String column , Collection valueList); /** * 并且 在or中使用 -- Gitee From e5de63c35ad3da95e25493fb8bdf6d617ad216dd Mon Sep 17 00:00:00 2001 From: wangxiaoyan Date: Sat, 16 Dec 2023 17:07:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?1=E3=80=81=E8=A7=A3=E5=86=B3=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E6=83=85=E5=86=B5=E4=B8=8BcodecRegistryList=E5=AD=98?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=AF=BC=E8=87=B4ArrayIndexOutOfBoundsExcept?= =?UTF-8?q?ion=202=E3=80=81=E8=A7=A3=E5=86=B3RegisterCodecUtil.getCodecCac?= =?UTF-8?q?heAndDefault()=E6=AF=8F=E8=B0=83=E7=94=A8=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E9=83=BD=E4=BC=9A=E5=9B=BA=E5=AE=9A=E5=AD=98=E5=82=A8=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E9=BB=98=E8=AE=A4=E8=A7=A3=E7=A0=81=E5=99=A8=203?= =?UTF-8?q?=E3=80=81=E5=B0=86CodecCache=E3=80=81CodecRegistryCache?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=88=B0RegisterCodecUtil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anwen/mongo/cache/codec/CodecCache.java | 15 ------ .../mongo/cache/codec/CodecRegistryCache.java | 36 ------------- .../com/anwen/mongo/codec/GenericCodec.java | 6 ++- .../toolkit/codec/RegisterCodecUtil.java | 52 ++++++++++++------- 4 files changed, 36 insertions(+), 73 deletions(-) delete mode 100644 mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecCache.java delete mode 100644 mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecRegistryCache.java diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecCache.java b/mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecCache.java deleted file mode 100644 index 92d339c..0000000 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecCache.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.anwen.mongo.cache.codec; - -import org.bson.codecs.Codec; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author JiaChaoYang - **/ -public class CodecCache { - - public static Map, Codec> codecMap = new ConcurrentHashMap<>(); - -} diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecRegistryCache.java b/mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecRegistryCache.java deleted file mode 100644 index 043d718..0000000 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/cache/codec/CodecRegistryCache.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.anwen.mongo.cache.codec; - -import com.anwen.mongo.toolkit.codec.RegisterCodecUtil; -import com.mongodb.MongoClientSettings; -import org.bson.codecs.configuration.CodecRegistry; - -import java.util.ArrayList; -import java.util.List; - -/** - * 解码器缓存,执行器获取collection时,会来这里拿一下,需要时可以再这里给解码器赋值 - * 可以自实现{@link CodecRegistry},也可以使用{@link RegisterCodecUtil}工具类中的registerCodec()方法, - * 此方法会获取传入的类中的所有非java原生的类字段,逐一注册为解码器,返回List - * @author JiaChaoYang - **/ -public abstract class CodecRegistryCache { - - public static List codecRegistryList = new ArrayList<>(); - - static { - codecRegistryList.add(MongoClientSettings.getDefaultCodecRegistry()); - } - - public static void addCodecRegistry(CodecRegistry codecRegistry){ - codecRegistryList.add(codecRegistry); - } - - public static void addCodecRegistry(List _codecRegistryList){ - codecRegistryList.addAll(_codecRegistryList); - } - - public static List getCodecRegistry(){ - return codecRegistryList; - } - -} diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/codec/GenericCodec.java b/mongo-plus-core/src/main/java/com/anwen/mongo/codec/GenericCodec.java index cdb5f86..f0336fb 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/codec/GenericCodec.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/codec/GenericCodec.java @@ -1,9 +1,9 @@ package com.anwen.mongo.codec; import com.anwen.mongo.cache.codec.BsonWriterCache; -import com.anwen.mongo.cache.codec.CodecCache; import com.anwen.mongo.toolkit.ClassTypeUtil; import com.anwen.mongo.toolkit.CustomClassUtil; +import com.anwen.mongo.toolkit.codec.RegisterCodecUtil; import org.bson.BsonReader; import org.bson.BsonType; import org.bson.BsonWriter; @@ -46,9 +46,10 @@ public class GenericCodec implements Codec { this.clazz = clazz; } + @SuppressWarnings("rawtypes") public Codec getCodec(Class clazz){ try { - return CodecCache.codecMap.get(clazz); + return RegisterCodecUtil.getCodec(clazz); }catch (CodecConfigurationException e){ if (logger.isDebugEnabled()){ logger.debug(e.getMessage()); @@ -66,6 +67,7 @@ public class GenericCodec implements Codec { BsonWriterCache.bsonWriterMap.put(this.clazz,writer); } + @SuppressWarnings({"unchecked", "rawtypes"}) public void setBson(BsonWriter writer, T value, EncoderContext encoderContext) { if (value == null){ return; diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/codec/RegisterCodecUtil.java b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/codec/RegisterCodecUtil.java index 525ee13..5aa22a5 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/codec/RegisterCodecUtil.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/codec/RegisterCodecUtil.java @@ -1,62 +1,74 @@ package com.anwen.mongo.toolkit.codec; -import com.anwen.mongo.cache.codec.CodecCache; -import com.anwen.mongo.cache.codec.CodecRegistryCache; import com.anwen.mongo.codec.GenericCodec; import com.anwen.mongo.toolkit.ClassTypeUtil; import com.anwen.mongo.toolkit.CollUtil; +import com.mongodb.MongoClientSettings; import org.bson.codecs.Codec; import org.bson.codecs.configuration.CodecRegistries; import org.bson.codecs.configuration.CodecRegistry; -import java.util.*; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; public class RegisterCodecUtil { - public static List codecRegistryList = new ArrayList<>(); + private static final List codecRegistryList = new CopyOnWriteArrayList<>(); - public static CodecRegistry registerCodec(T t){ + private static final Map, Codec> codecMap = new ConcurrentHashMap<>(); + + static { + // 静态加载所有默认解码器 + codecRegistryList.add(MongoClientSettings.getDefaultCodecRegistry()); + } + + public static Codec getCodec(Class clazz) { + return codecMap.get(clazz); + } + + public static CodecRegistry registerCodec(T t) { return registerCodec(ClassTypeUtil.getAllClass(t)); } - public static CodecRegistry registerCodec(Map map){ - if (map == null){ + public static CodecRegistry registerCodec(Map map) { + if (map == null || map.isEmpty()) { + // 类map为空,当前已缓存的解码器 return CodecRegistries.fromRegistries(codecRegistryList); } - return registerCodec(new HashSet>(){{ + return registerCodec(new HashSet>() {{ map.values().forEach(m -> { - if (m instanceof List){ + if (m instanceof List) { System.out.println("找到集合了找到集合了"); List list = (List) m; - if (CollUtil.isEmpty(list)){ + if (CollUtil.isEmpty(list)) { return; } addAll(ClassTypeUtil.getAllClass(list.get(0))); - } else if (m instanceof Map){ + } else if (m instanceof Map) { registerCodec((Map) m); - }else { + } else { addAll(ClassTypeUtil.getAllClass(m)); } }); }}); } - public static CodecRegistry registerCodec(Set> fieldClasses){ - if (CollUtil.isNotEmpty(CodecRegistryCache.getCodecRegistry())){ - codecRegistryList.addAll(CodecRegistryCache.getCodecRegistry()); - } - fieldClasses = fieldClasses.stream().filter(clazz -> !CodecCache.codecMap.containsKey(clazz)).collect(Collectors.toSet()); + public static CodecRegistry registerCodec(Set> fieldClasses) { + fieldClasses = fieldClasses.stream().filter(clazz -> !codecMap.containsKey(clazz)).collect(Collectors.toSet()); fieldClasses.parallelStream().forEach(clazz -> { Codec codec = new GenericCodec<>(clazz); - CodecCache.codecMap.put(clazz,codec); + codecMap.put(clazz, codec); codecRegistryList.add(CodecRegistries.fromCodecs(codec)); }); return CodecRegistries.fromRegistries(codecRegistryList); } - public static CodecRegistry getCodecCacheAndDefault(){ - codecRegistryList.addAll(CodecRegistryCache.codecRegistryList); + public static CodecRegistry getCodecCacheAndDefault() { return CodecRegistries.fromRegistries(codecRegistryList); } -- Gitee