diff --git a/src/org/redkale/source/CacheMemorySource.java b/src/org/redkale/source/CacheMemorySource.java index 22e2bf8cd..5c3468eb6 100644 --- a/src/org/redkale/source/CacheMemorySource.java +++ b/src/org/redkale/source/CacheMemorySource.java @@ -264,7 +264,7 @@ public final class CacheMemorySource extends AbstractService i source.hincr("map", "key1"); System.out.println("map.key1 值 : " + source.hgetLong("map", "key1", -1)); source.hmset("map", "key2", "haha", "key3", 333); - System.out.println("map.[key1,key2,key3] 值 : " + source.hmget("map", "key1", "key2", "key3")); + System.out.println("map.[key1,key2,key3] 值 : " + source.hmget("map", String.class, "key1", "key2", "key3")); System.out.println("------------------------------------"); source.destroy(null); @@ -441,13 +441,18 @@ public final class CacheMemorySource extends AbstractService i } @Override - public List hmget(final String key, final String... fields) { + public List hmget(final String key, final Type type, final String... fields) { if (key == null) return null; CacheEntry entry = container.get(key); if (entry == null || entry.isExpired() || entry.mapValue == null) return null; - List rs = new ArrayList<>(fields.length); + List rs = new ArrayList<>(fields.length); for (int i = 0; i < fields.length; i++) { - rs.add((Serializable) entry.mapValue.get(fields[i])); + Serializable val = (Serializable) entry.mapValue.get(fields[i]); + if (type == String.class) { + rs.add(val == null ? null : (T)String.valueOf(val)); + } else { + rs.add((T)val); + } } return rs; } @@ -602,8 +607,8 @@ public final class CacheMemorySource extends AbstractService i } @Override - public CompletableFuture> hmgetAsync(final String key, final String... fields) { - return CompletableFuture.supplyAsync(() -> hmget(key, fields), getExecutor()); + public CompletableFuture> hmgetAsync(final String key, final Type type, final String... fields) { + return CompletableFuture.supplyAsync(() -> hmget(key, type, fields), getExecutor()); } @Override diff --git a/src/org/redkale/source/CacheSource.java b/src/org/redkale/source/CacheSource.java index 61b4aa8f7..9b6b8384f 100644 --- a/src/org/redkale/source/CacheSource.java +++ b/src/org/redkale/source/CacheSource.java @@ -97,7 +97,7 @@ public interface CacheSource { public void hmset(final String key, final Serializable... values); - public List hmget(final String key, final String... fields); + public List hmget(final String key, final Type type, final String... fields); public Map hmap(final String key, final Type type, int offset, int limit); @@ -334,7 +334,7 @@ public interface CacheSource { public CompletableFuture hmsetAsync(final String key, final Serializable... values); - public CompletableFuture> hmgetAsync(final String key, final String... fields); + public CompletableFuture> hmgetAsync(final String key, final Type type, final String... fields); public CompletableFuture> hmapAsync(final String key, final Type type, int offset, int limit);