Mybatis中typeHandler的部分用法

Java后端开发中,从数据库查询出来的值可能不是自己想要的,需要处理一下。
例如当null时,有默认值。

定义typeHandler:


import com.alibaba.fastjson.JSON;
import com.mujun.community.cache.SysConfigCache;
import com.mujun.community.model.AddFriendWays;
import com.mujun.community.model.NotifyConfigs;
import com.mujun.community.util.SpringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class NotifyConfigHandler extends BaseTypeHandler {


    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
    }


    public String getDefaultConfigsString() {
        NotifyConfigs defaultConfigs = SpringUtil.getSpringCtx().getBean(SysConfigCache.class).getNotifyDefaultConfigs();
        return JSON.toJSONString(defaultConfigs);
    }

    public String getDefaultAddFriendWaysString() {
        AddFriendWays defaultAddFriendWays = SpringUtil.getSpringCtx().getBean(SysConfigCache.class).getDefaultAddFriendWays();
        return JSON.toJSONString(defaultAddFriendWays);
    }

    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {

        String ret = rs.getString(columnName);
        if (StringUtils.isNotEmpty(ret)) {
            return ret;
        }

        switch (columnName) {
            case "notify_configs":
                return getDefaultConfigsString();
            case "add_friend_ways":
                return getDefaultAddFriendWaysString();
        }
        return null;
    }

    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return null;
    }

    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return null;
    }
}

使用typeHandler:


....

....

你可能感兴趣的:(Mybatis中typeHandler的部分用法)