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();
                }
            }
    
        }
    }
  • 相关阅读:
    demo12-回到顶部
    demo11-友情链接
    demo10-超链接标签
    demo09-程序员练习
    demo08-图片标签
    demo07-盒子标签
    demo06-字体标签
    demo05-换行标签
    转&nbsp;j2ee&nbsp;.线程池.对象池,连接池
    几种开源Java&nbsp;Web容器线程池…
  • 原文地址:https://www.cnblogs.com/myadmin/p/5064274.html
Copyright © 2011-2022 走看看