数据库中存储时候将字段为空串时转换成null

数据库中存储时候将字段为空串时转换成null

(oracle默认处理将空串的字段转换成null存入数据库,其他有些数据库(如:神通数据库)并没有做相关处理,可以通过加处理器进行统一处理,避免判断为空时不能用is null和nvl的使用,nvl仅限null的判断)

import org.apache.ibatis.type.BaseTypeHandler;

import org.apache.ibatis.type.JdbcType;

import java.sql.*;

public class StringToNullTypeHandler extends BaseTypeHandler<String > {

@Override

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

if (parameter == null || parameter.isEmpty()) {

ps.setNull(i, Types.VARCHAR);

} else {

ps.setString(i, parameter);

}

}

@Override

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

String result = rs.getString(columnName);

return result == null || result.isEmpty() ? null : result;

}

@Override

public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {

String result = rs.getString(columnIndex);

return result == null || result.isEmpty() ? null : result;

}

@Override

public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {

String result = cs.getString(columnIndex);

return result == null || result.isEmpty() ? null : result;

}

}

在 MyBatis 配置中注册这个类型处理器:

<typeHandlers >

<typeHandler handler="com.example.StringToNullTypeHandler" javaType="java.lang.String"/>

</typeHandlers>

相关推荐
曹牧5 分钟前
Java:实现List的定长截取
java·开发语言·list
byte轻骑兵5 分钟前
突破文档型数据库迁移困境:金仓多模方案破解电子证照系统国产化难题
数据库
水无痕simon24 分钟前
8 shiro的web整合
java
CodeCraft Studio31 分钟前
全球知名的Java Web开发平台Vaadin上线慧都网
java·开发语言·前端·vaadin·java开发框架·java全栈开发·java ui 框架
我是华为OD~HR~栗栗呀42 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试
城管不管1 小时前
Java EE、Java SE 和 Spring Boot
java·spring boot·java-ee
xdpcxq10291 小时前
EF Core框架数据库连接管理
java·jvm·数据库
熙客1 小时前
分布式ID解决方案
java·分布式·spring cloud·微服务
菜鸟小九1 小时前
SSM(MybatisPlus)
java·开发语言·spring boot·后端
不爱编程的小九九2 小时前
小九源码-springboot051-智能推荐旅游平台
java·spring boot·后端