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

相关推荐
rainFFrain2 小时前
(MySQL)库的操作
数据库·mysql
此木|西贝2 小时前
【设计模式】享元模式
java·设计模式·享元模式
李少兄3 小时前
解决Spring Boot多模块自动配置失效问题
java·spring boot·后端
bxlj_jcj4 小时前
JVM性能优化之年轻代参数设置
java·性能优化
八股文领域大手子4 小时前
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现
java·数据库·算法·缓存·mybatis·哈希算法
不当菜虚困4 小时前
JAVA设计模式——(八)单例模式
java·单例模式·设计模式
noravinsc4 小时前
django admin 中更新表数据 之后再将数据返回管理界面
数据库·django·sqlite
m0_740154674 小时前
Maven概述
java·maven
吗喽对你问好4 小时前
Java位运算符大全
java·开发语言·位运算