diff --git a/doc/image/storage/storage02.png b/doc/image/storage/storage02.png index 1cdbc168..35a61660 100644 Binary files a/doc/image/storage/storage02.png and b/doc/image/storage/storage02.png differ diff --git a/doc/image/storage/storage03.png b/doc/image/storage/storage03.png new file mode 100644 index 00000000..a15bf0b6 Binary files /dev/null and b/doc/image/storage/storage03.png differ diff --git a/storage/README.md b/storage/README.md index c534109a..84aee4e7 100644 --- a/storage/README.md +++ b/storage/README.md @@ -21,6 +21,10 @@ English | [简体中文](./README_CN.md) ![Image text](../doc/image/storage/storage02.png) +- In addition, you can also use the record class provided by Java's new features + +![Image text](../doc/image/storage/storage03.png) + - After parsing, there are two ways to use it 1. By annotation ``` @@ -28,13 +32,13 @@ English | [简体中文](./README_CN.md) public class StudentManager { @ResInjection - private Storage studentResources; + private IStorage studentResources; } ``` 2. Dynamically obtained through classes ``` - Storage studentResources = (Storage) StorageContext.getStorageManager().getStorage(StudentResource.class); + IStorage studentResources = StorageContext.getStorageManager().getStorage(StudentResource.class); ``` - Find the corresponding row by id @@ -43,19 +47,35 @@ English | [简体中文](./README_CN.md) var studentResource = studentResources.get(1000); ``` +Alternatively, it can be obtained through the following methods + +``` +var resource = StorageContext.get(StudentResource.class, 1001); +``` + - Find the corresponding row by index, default to a repeatable index, and return a list ``` -var students = studentResources.getIndex("name", "james0"); +var students = studentResources.getIndex(StudentResource::getName, "james0"); +``` + +If you are a record class, the usage is as follows + +``` +var students = studentStorage.getIndexes(StudentResource::name, "james0"); ``` - The unique index is obtained through Storage.getUniqueIndex(), and the index annotation needs to be marked as @Index( unique = true) +``` +StudentResource student = storage.getUniqueIndex(StudentResource::idCard, "110101200007281903"); +``` + ### Ⅲ. Hot update Excel Json - [tank](https://github.com/zfoo-project/tank-game-server/blob/main/common/src/main/java/com/zfoo/tank/common/util/HotUtils.java) - Distributed hot update Excel Jsoncsv configuration file implementation + Distributed hot update Excel Json csv configuration file implementation ### Ⅳ. Use diff --git a/storage/README_CN.md b/storage/README_CN.md index a9848402..5eadbaa9 100644 --- a/storage/README_CN.md +++ b/storage/README_CN.md @@ -19,6 +19,10 @@ ![Image text](../doc/image/storage/storage02.png) +- 除此之外你还可以使用Java新特性提供的record类 + +![Image text](../doc/image/storage/storage03.png) + - 解析过后有两种使用方式 1. 通过注解 ``` @@ -26,29 +30,43 @@ public class StudentManager { @ResInjection - private Storage studentResources; + private IStorage studentStorage; } ``` 2. 通过类动态获取 ``` - Storage studentResources = (Storage) StorageContext.getStorageManager().getStorage(StudentResource.class); + IStorage studentStorage = StorageContext.getStorageManager().getStorage(StudentResource.class); ``` - 通过id找到对应的行 ``` -var studentResource = studentResources.get(1000); +var studentResource = studentStorage.get(1000); +``` + +或者也可以通过如下方式获取 +``` +var resource = StorageContext.get(StudentResource.class, 1001); ``` - 通过索引找对应的行,默认为可重复的索引,返回了一个列表list ``` -var students = studentResources.getIndex("name", "james0"); +var students = studentStorage.getIndexes(StudentResource::getName, "james0"); +``` + +如果你是record类则使用方式如下 +``` +var students = studentStorage.getIndexes(StudentResource::name, "james0"); ``` - 唯一索引通过Storage.getUniqueIndex()获取,需要把索引注解标注为@Index(unique = true) +``` +StudentResource student = storage.getUniqueIndex(StudentResource::idCard, "110101200007281903"); +``` + ### Ⅲ. 热更新Excel/Json - [tank](https://github.com/zfoo-project/tank-game-server/blob/main/common/src/main/java/com/zfoo/tank/common/util/HotUtils.java) diff --git a/storage/src/test/java/com/zfoo/storage/ApplicationTest.java b/storage/src/test/java/com/zfoo/storage/ApplicationTest.java index 9d493ad4..0bf40684 100644 --- a/storage/src/test/java/com/zfoo/storage/ApplicationTest.java +++ b/storage/src/test/java/com/zfoo/storage/ApplicationTest.java @@ -23,6 +23,7 @@ import com.zfoo.storage.resource.StudentResource; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; @@ -36,6 +37,14 @@ public class ApplicationTest { private static final Logger logger = LoggerFactory.getLogger(ApplicationTest.class); + + @Autowired + public String testSpringInject(IStorage studentStorage) { + StudentResource resource = studentStorage.get(1001); + + return resource.getName(); + } + // storage教程 @Test public void startStorageTest() { @@ -47,6 +56,7 @@ public class ApplicationTest { // Excel的映射内容需要在被Spring管理的bean的方法上加上@ResInjection注解,即可自动注入Excel对应的对象 // 参考StudentManager中的标准用法 + IStorage storage1 = StorageContext.getStorageManager().getStorage(StudentResource.class); //获取所有数据 List list = StorageContext.getList(StudentResource.class); diff --git a/storage/src/test/java/com/zfoo/storage/StudentResource.java b/storage/src/test/java/com/zfoo/storage/StudentResource.java index ddde5f62..ed17b72b 100644 --- a/storage/src/test/java/com/zfoo/storage/StudentResource.java +++ b/storage/src/test/java/com/zfoo/storage/StudentResource.java @@ -10,7 +10,6 @@ import java.util.List; /** * @author veione - * @version 1.0.0 */ @Storage public record StudentResource( diff --git a/storage/src/test/java/com/zfoo/storage/TestFieldUtils.java b/storage/src/test/java/com/zfoo/storage/util/support/TestFieldUtils.java similarity index 94% rename from storage/src/test/java/com/zfoo/storage/TestFieldUtils.java rename to storage/src/test/java/com/zfoo/storage/util/support/TestFieldUtils.java index f4849a23..f4a69c84 100644 --- a/storage/src/test/java/com/zfoo/storage/TestFieldUtils.java +++ b/storage/src/test/java/com/zfoo/storage/util/support/TestFieldUtils.java @@ -1,4 +1,4 @@ -package com.zfoo.storage; +package com.zfoo.storage.util.support; import com.zfoo.protocol.util.FieldUtils; import org.junit.Test; @@ -7,7 +7,6 @@ import static org.junit.Assert.assertEquals; /** * @author veione - * @version 1.0.0 */ public class TestFieldUtils { diff --git a/storage/src/test/java/com/zfoo/storage/TestLambdaFunction.java b/storage/src/test/java/com/zfoo/storage/util/support/TestLambdaFunction.java similarity index 94% rename from storage/src/test/java/com/zfoo/storage/TestLambdaFunction.java rename to storage/src/test/java/com/zfoo/storage/util/support/TestLambdaFunction.java index dcc0d54f..5eb56f49 100644 --- a/storage/src/test/java/com/zfoo/storage/TestLambdaFunction.java +++ b/storage/src/test/java/com/zfoo/storage/util/support/TestLambdaFunction.java @@ -1,5 +1,6 @@ -package com.zfoo.storage; +package com.zfoo.storage.util.support; +import com.zfoo.storage.StudentResource; import com.zfoo.storage.util.LambdaUtils; import com.zfoo.storage.util.function.Func1; import com.zfoo.storage.util.support.LambdaMeta; @@ -11,7 +12,6 @@ import java.util.function.Function; /** * @author veione - * @version 1.0.0 */ public class TestLambdaFunction { //https://blog.csdn.net/iteye_19045/article/details/119299015 diff --git a/storage/src/test/java/com/zfoo/storage/TestLambdaFunctionCache.java b/storage/src/test/java/com/zfoo/storage/util/support/TestLambdaFunctionCache.java similarity index 91% rename from storage/src/test/java/com/zfoo/storage/TestLambdaFunctionCache.java rename to storage/src/test/java/com/zfoo/storage/util/support/TestLambdaFunctionCache.java index 5bbd9e36..1f093fb6 100644 --- a/storage/src/test/java/com/zfoo/storage/TestLambdaFunctionCache.java +++ b/storage/src/test/java/com/zfoo/storage/util/support/TestLambdaFunctionCache.java @@ -1,4 +1,4 @@ -package com.zfoo.storage; +package com.zfoo.storage.util.support; import com.zfoo.storage.resource.StudentResource; import com.zfoo.storage.util.LambdaUtils; @@ -7,7 +7,6 @@ import org.junit.Test; /** * @author veione - * @version 1.0.0 */ public class TestLambdaFunctionCache {