Mybatis类型转换小例子
Mybatis类型转换小例子
monee1988 发表于2年前
Mybatis类型转换小例子
  • 发表于 2年前
  • 阅读 19
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 有时候我们用mybatis做查询的时候,我们需要对返回的数据进行转换或者格式化等调整,很多时候我们会用sql语句去做结果的改变,但是这种方式在性能效率和通用性上不是最优的,这个时候我们希望更希望有一个类型转换的方法,执行之后就可以返回我们想要的结果,这样在mybatis查询中想要做结果改变的时候,我们只需要将插件配置上即可。

:point_right:**例子描述:**我们希望将数据库查询的时间格式化为几秒前,几分钟前,几个小时前,几天前,几个月前,几年前等等格式

:pray:开始例子

1. 创建自定义的TypeHandler 这里我们用子类StringTypeHandler:tw-1f4af:

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

import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.StringTypeHandler;
public class CustomTimeStampHandler extends StringTypeHandler {
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
			throws SQLException {
		        ps.setString(i, parameter);
    }

    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
	    try {
		    String currentColumnValue = rs.getString(columnName);
			if (!StringUtils.isEmpty(currentColumnValue)) {
			    //此处做数据格式的转换
			    String result = formatResult(currentColumnValue);
			    return result;
	            }
            } catch (Exception e) {
			    e.printStackTrace();
		    }
        return null;
    }

    private String formatResult(String currentColumnValue) {
        // TODO 返回数据格式化处理逻辑
        return null;
    }
}

2. 注册TypeHandler(StringTypeHandler):tw-1f4e2:

在mybatis-config.xml中注册自定义的TypeHandler

<typeHandlers>
      <typeHandler handler="com.xxx.CustomTimeStampHandler" javaType="String"/>
</typeHandlers>

3. mybatis查询sql中的利用:tw-1f4aa:

<result property="yourproperty" column="yourcolumn" typeHandler="com.xxx.CustomTimeStampHandler"/>  
共有 人打赏支持
monee1988
粉丝 6
博文 6
码字总数 3357
×
monee1988
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: