首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MyBatis修剪char类型列中的空格

使用MyBatis修剪char类型列中的空格
EN

Stack Overflow用户
提问于 2011-05-13 17:55:48
回答 2查看 3.2K关注 0票数 1

在使用MyBatis XML映射器resultMap或resultType时,有没有一种简单的方法可以去除字符类型列中的空格?或者我需要编写一个自定义类型处理程序/向我的JavaBean设置器中添加代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-07 23:49:03

执行此操作的最佳方法是创建一个类型处理程序,该处理程序将用于替代默认的StringTypeHandler。不过,如果XML上有一个标志就更方便了。

票数 0
EN

Stack Overflow用户

发布于 2020-07-02 18:00:47

这是一个从TypeHandlers – MyBatis 3后面的VARCHAR列中删除空格的简单示例。

代码语言:javascript
复制
package com.foo.bar.mybatis.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 org.apache.ibatis.type.MappedJdbcTypes;

@MappedJdbcTypes(JdbcType.VARCHAR)
public class StringTrimTypeHandler extends BaseTypeHandler<String>  {

    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
        System.out.println("StringSpaceTypeHandler.getNullableResult(ResultSet rs, String columnName) [rs=" + rs + ", columnName=" + columnName + "]");
        return rs.getString(columnName);
    }

    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        System.out.println("StringSpaceTypeHandler.getNullableResult(ResultSet rs, int columnIndex) [rs=" + rs + ", columnIndex=" + columnIndex + "]");
        return rs.getString(columnIndex);
    }

    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        System.out.println("StringSpaceTypeHandler.getNullableResult(CallableStatement cs, int columnIndex) [cs=" + cs + ", columnIndex=" + columnIndex + "]");
        return cs.getString(columnIndex);
    }

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        System.out.println("StringSpaceTypeHandler.setNonNullParameter() [ps=" + ps + ", i=" + i + ", parameter=" + parameter + ", jdbcType=" + jdbcType + "]");
        parameter = parameter.trim();
        ps.setString(i, parameter);
    }

}

关键部分是在setNonNullParameter()方法中使用trim()在将其传递给PreparedStatement之前删除标题和尾部空格。

创建StringTrimTypeHandler类后,需要在mybatis-config.xml中对其进行配置。

代码语言:javascript
复制
<!-- mybatis-config.xml -->

<configuration>
.....
    <typeHandlers>
        <typeHandler handler="com.foo.bar.mybatis.handler.StringTrimTypeHandler"/>
    </typeHandlers>
.....
</configuration>

然后,您可以在MyBatis中配置logging – MyBatis 3以查看实际的sql参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5990193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档