数据库中存储时候将字段为空串时转换成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>

相关推荐
为中华崛起而奋斗2 分钟前
Oracle 19c RAC集群ADG搭建
数据库·oracle
消失的旧时光-19433 分钟前
Android USB 通信开发
android·java
惊鸿一博5 分钟前
java_网络服务相关_gateway_nacos_feign区别联系
java·开发语言·gateway
betazhou1 小时前
mariadb5.5.56在centos7.6环境安装
android·数据库·adb·mariadb·msyql
开挖掘机上班1 小时前
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
数据库·mysql
花月C1 小时前
Mysql-定时删除数据库中的验证码
数据库·后端·mysql·spring
success_a3 小时前
大故障:阿里云核心域名爆炸了
数据库·阿里云·云计算
@小红花6 小时前
MySQL数据库从0到1
数据库·mysql·oracle
[听得时光枕水眠]6 小时前
MySQL基础(三)DQL(Data Query Language,数据查询语言)
数据库·mysql·oracle
我科绝伦(Huanhuan Zhou)6 小时前
深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化
数据库·sql·oracle