数据库中存储时候将字段为空串时转换成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 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
weixin_511255215 小时前
MySQL升级记录
数据库·mysql
噢,我明白了6 小时前
java中唯一键和幂等键的应用
java·后端
程序猿乐锅6 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
Leo.yuan7 小时前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
考虑考虑7 小时前
synchronized字符串常量
java·后端·java ee
长谷深风1117 小时前
Tool与Skill:AI能力设计的分水岭
java·人工智能·ai·大模型·aiagent
m0_587383007 小时前
广州24小时自助健身房解决方案实战指南与系统部署要点
java·spring·小程序·架构·需求分析
做运维的阿瑞7 小时前
数据库增删改的安全写法
数据库·sql·mysql
Escalating_xu7 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言