mybatis typeHandler定义使用 mybatis中几种typeHandler的定义使用详解

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

mybatis typeHandler定义使用 mybatis中几种typeHandler的定义使用详解

爪哇小生   2021-12-03 我要评论
想了解mybatis中几种typeHandler的定义使用详解的相关内容吗,爪哇小生在本文为您仔细讲解mybatistypeHandler定义使用的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:mybatistypeHandler使用,mybatistypeHandler定义,下面大家一起来学习吧。

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();
            }
        }

    }
}

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们