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

相关推荐
boonya9 分钟前
Java JVM核心原理与面试题解析
java·开发语言·jvm
g_i_a_o_giao11 分钟前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析
源雀数智13 分钟前
源雀SCRM开源:企微文件防泄密
java·人工智能·企业微信·流量运营
c萱21 分钟前
软件测试错题笔记
软件测试·数据库·笔记·测试工具·oracle·测试用例
長琹27 分钟前
AES加密算法详细加密步骤代码实现--身份证号码加解密系统
网络·数据库·人工智能·python·密码学
Meteors.43 分钟前
23种设计模式——装饰器模式(Decorator Pattern)详解
java·设计模式·装饰器模式
小薛博客1 小时前
BigDecimal的使用
java
你我约定有三1 小时前
软件启动时加配置文件 vs 不加配置文件
java·分布式·zookeeper
只因在人海中多看了你一眼1 小时前
B.50.10.06-NoSQL数据库与电商应用
数据库·nosql
27^×2 小时前
Java 内存模型与垃圾回收机制详解
java·开发语言