package com.usemodj.forum.service; import java.lang.reflect.Type; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.usemodj.forum.domain.User; import com.usemodj.forum.domain.UserMeta; import com.usemodj.forum.mappers.UserMapper; import com.usemodj.forum.mappers.UserMetaMapper; public class UserMetaService { private static Logger logger = Logger.getLogger(UserMetaService.class ); UserMetaMapper userMetaMapper = null; UserMapper userMapper = null; public void updateUserMeta(SqlSession sqlSession, long userId, String metaKey, Map<String, Object> metaValue) throws Exception { metaKey = metaKey.replaceAll("(?)[^a-z0-9_]", ""); Gson gson = new Gson(); Type listType = new TypeToken<Map<String, Object>>() {}.getType(); String json = gson.toJson(metaValue, listType); // Deserialize : gson.fromJson(json, listType); logger.debug("--- json: "+ json); userMetaMapper = sqlSession.getMapper( UserMetaMapper.class); UserMeta userMeta = userMetaMapper.selectUserMeta(userId, metaKey); if( null == userMeta) userMetaMapper.insertUserMeta( userId, metaKey, json); else userMetaMapper.updateUserMeta(userMeta.getUmetaId(), metaKey, json); } public void updateUserMeta(SqlSession sqlSession, long userId, String metaKey, String metaValue) throws Exception { metaKey = metaKey.replaceAll("(?)[^a-z0-9_]", ""); userMetaMapper = sqlSession.getMapper( UserMetaMapper.class); UserMeta userMeta = userMetaMapper.selectUserMeta(userId, metaKey); if( null == userMeta) userMetaMapper.insertUserMeta( userId, metaKey, metaValue); else userMetaMapper.updateUserMeta(userMeta.getUmetaId(), metaKey, metaValue); } }