zoukankan      html  css  js  c++  java
  • mybatis中几种typeHandler的定义使用

    1.存储到数据库, 将LONG数组转换成字符串;从数据库获取数据, 将字符串转为LONG数组

    package com.winturn.utils.handler;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    
    import com.winturn.utils.CommonJsonUtil;
    
    /**
     * <p>Class: ArrayLongTypeHandler.java</p>
     * <p>Description: 存储到数据库, 将LONG数组转换成字符串;
     *                 从数据库获取数据, 将字符串转为LONG数组.
    </p>
    */ public class ArrayLongTypeHandler extends BaseTypeHandler<Object> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, CommonJsonUtil.stringify(parameter)); } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { return CommonJsonUtil.parse3(rs.getString(columnName), Object.class); } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return CommonJsonUtil.parse3(rs.getString(columnIndex), Object.class); } @Override public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return CommonJsonUtil.parse3(cs.getString(columnIndex), Object.class); } }

    2.存储到数据库, 将基本数据数组转换成字符串;从数据库获取数据, 将字符串根据','拆分,转为数组.

    package com.winturn.utils.handler;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    
    import com.winturn.utils.CommonJsonUtil;
    
    /**
     * <p>Class: ArrayStringTypeHandler.java</p>
     * <p>Description: 存储到数据库, 将基本数据数组转换成字符串;
     *                 从数据库获取数据, 将字符串根据','拆分,转为数组.</p>
     *
     * 
     */
    public class ArrayStringTypeHandler extends BaseTypeHandler<Object> {
    
        @Override
        public void setNonNullParameter(PreparedStatement ps, int i, Object parameter,
                JdbcType jdbcType) throws SQLException {
            ps.setString(i, CommonJsonUtil.stringify(parameter));
        }
    
        @Override
        public Object getNullableResult(ResultSet rs, String columnName)
                throws SQLException {
            return CommonJsonUtil.parse2(rs.getString(columnName), Object.class);
        }
    
        @Override
        public Object getNullableResult(ResultSet rs, int columnIndex)
                throws SQLException {
            return CommonJsonUtil.parse2(rs.getString(columnIndex), Object.class);
        }
    
        @Override
        public Object getNullableResult(CallableStatement cs, int columnIndex)
                throws SQLException {
            return CommonJsonUtil.parse2(cs.getString(columnIndex), Object.class);
        }
    
    }

    3.jsonarray 格式的字符串转换为相应的数组

    package com.winturn.utils.handler;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    
    import com.winturn.utils.CommonJsonUtil;
    
    
    /**
     * <p>Class: ArrayIntegerTypeHandler.java</p>
     * <p>Description: jsonarray 格式的字符串转换为相应的数组 </p>
     * 
     */
    public class JsonArrayTypeHandler extends BaseTypeHandler<Object> {
    
        @Override
        public void setNonNullParameter(PreparedStatement ps, int i,
                Object parameter, JdbcType jdbcType) throws SQLException {
            ps.setString(i, CommonJsonUtil.stringify(parameter));
        }
    
        @Override
        public Object getNullableResult(ResultSet rs, String columnName)
                throws SQLException {
            return CommonJsonUtil.parseJsonToArray(rs.getString(columnName), Object.class);
        }
    
        @Override
        public Object getNullableResult(ResultSet rs, int columnIndex)
                throws SQLException {
            return CommonJsonUtil.parseJsonToArray(rs.getString(columnIndex), Object.class);
        }
    
        @Override
        public Object getNullableResult(CallableStatement cs, int columnIndex)
                throws SQLException {
            return CommonJsonUtil.parseJsonToArray(cs.getString(columnIndex), Object.class);
        }
    
    }

    4.将Float类型的数组装换成字符创进行存储

    package com.winturn.utils.handler;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    
    import com.winturn.utils.CommonJsonUtil;
    
    /**
     * <p>Filename:JsonFloatTypeHandler.java</p>
     * <p>Description: 将float类型数组装换成字符串
    
    </p>
    
     * 
     */
    public class JsonFloatTypeHandler extends BaseTypeHandler<Object> {
    
        @Override
        public void setNonNullParameter(PreparedStatement ps, int i,
                Object parameter, JdbcType jdbcType) throws SQLException {
            ps.setString(i, CommonJsonUtil.stringifyObject(parameter));
        }
    
        @Override
        public Object getNullableResult(ResultSet rs, String columnName)
                throws SQLException {
            return CommonJsonUtil.parseJsonToFloat(rs.getString(columnName), Object.class);
        }
    
        @Override
        public Object getNullableResult(ResultSet rs, int columnIndex)
                throws SQLException {
            return CommonJsonUtil.parseJsonToFloat(rs.getString(columnIndex), Object.class);
        }
    
        @Override
        public Object getNullableResult(CallableStatement cs, int columnIndex)
                throws SQLException {
            return CommonJsonUtil.parseJsonToFloat(cs.getString(columnIndex), Object.class);
        }
    }

    5.将map装换成字符串存储到数据库,取出时将字符串装换成map

    package com.winturn.utils.handler;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Types;
    import java.util.Map;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    import org.codehaus.jackson.map.ObjectMapper;
    
    import com.winturn.exceptions.RolerServiceException;
    import com.winturn.utils.JsonMapUtil;
    /**
     * 
    * @ClassName: JsonMapTypeHandler 
    * @Description: 将map装换成数组存储数据库,取出时将字符串装换成map
    * @author sgl
    * @date 2015年12月21日 下午6:22:50
     */
    public class JsonMapTypeHandler extends BaseTypeHandler<Map<String, Object>> {
    
        ObjectMapper mapper = new ObjectMapper();
    
        @Override
        public Map<String, Object> getNullableResult(ResultSet rs, String columnName) {
            try {
                String value = rs.getString(columnName);
                return mapper.readValue(value, Map.class);
            } catch (Exception e) {
    
            }
            return null;
        }
    
        @Override
        public Map<String, Object> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
            try {
                String value = rs.getString(columnIndex);
                return mapper.readValue(value, Map.class);
            } catch (Exception e) {
    
            }
            return null;
        }
    
        @Override
        public Map<String, Object> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
            try {
                String value = cs.getString(columnIndex);
                return mapper.readValue(value, Map.class);
            } catch (Exception e) {
    
            }
            return null;
        }
    
        @Override
        public void setNonNullParameter(PreparedStatement ps, int i, Map<String, Object> parameter, JdbcType jdbcType)
                throws SQLException {
            if (parameter == null) {
                ps.setNull(i, Types.VARCHAR);
            } else {
                try {
                    ps.setString(i, JsonMapUtil.getJsonStrByMap(parameter));
                } catch (RolerServiceException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }
  • 相关阅读:
    HyperV Server 2008 R2 包含简体中文 下载
    Javascript实现把网页中table的内容导入到excel中的几种方法
    C# WebRequest WebClient Post请求 无乱码
    聊聊我对开发项目选技术的看法
    聊聊我对开发项目选技术的看法2
    企业的虚拟化发展
    不成文的期望
    Deep Zoom Composer 小工具 三步 5分钟
    2009829 周末
    复制文章时自动在文章末尾加上来源网址的代码
  • 原文地址:https://www.cnblogs.com/myadmin/p/5064274.html
Copyright © 2011-2022 走看看