hashmapper的使用以及json字符串与普通字符串的差异

使用hashmapper时要转化的类一定要有无参构造函数

使用hashmapper将实体类与map互转的实现

public QuestShow getQuest(String key, List<String> fields) {
		if (stringRedisTemplate.hasKey(getKey(key)) == false)
			return null;
		fields.add("subject");
		fields.add("section");
		fields.add("sid");
		if (fields.contains("think")) {
			fields.add("QTDicFormular");
			fields.add("QTDicPoint");
		}
		if (fields.contains("knowledges"))
			fields.add("videos");
		List<String> list = createHashOperation().multiGet(getKey(key), fields);
		Map<String, String> map = new HashMap<String, String>();
		for (int i = 0; i < fields.size(); i++) {
			String str = list.get(i) != null ? list.get(i) : "";
			map.put(fields.get(i), str);
		}
		return new QuestShow(createHashMapper().fromHash(map));
		// return new QuestShow(new QuestShows(map));
	}

	public void putQuest(String key, QuestShow quest) {
		Map<String, String> map = createHashMapper().toHash(new QuestShows(quest));
		createHashOperation().putAll(getKey(key), map);
		stringRedisTemplate.expire(getKey(key), 6, TimeUnit.HOURS);
	}

hashmapper是Spring data redis 中提供的类,其基于apache common beanutils,在使用时要导入jar包

<dependency>
			<groupId>commons-beanUtils</groupId>
			<artifactId>commons-beanUtils</artifactId>
			<version>1.9.2</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2.2</version>
		</dependency>

hashmapper在转换实体类时只能实现一层转化,如果实体类有多层机构,则在转出时无法实现。这时需要先将实体类中的多层结构转化为json在转map

这与redis的序列化工具类型无关(是Stringseriablizer还是jdk无关)

理解json和普通String的优势

posted @ 2016-12-22 11:53  車輪の唄  阅读(19)  评论(0)    收藏  举报  来源