mybatis plus中空字符串无法保存到数据库如何解决

发布时间:2021-02-20 16:19:21 作者:Leah
来源:亿速云 阅读:721

mybatis plus中空字符串无法保存到数据库如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

解决办法

在字段上加上

@TableField(strategy = FieldStrategy.IGNORED)

strategy字段更新插入策略属性说明:

IGNORED(0): “忽略判断”, 所有字段都更新和插入

NOT_NULL(1): “非 NULL 判断”, 只更新和插入非NULL值

NOT_EMPTY(2): “非空判断”, 只更新和插入非NULL值且非空字符串

另外一种方式可全局配置,未亲手实践。

补充:Mybatis查询数据部分字段显示为null,怎么转成空串("")

1、先定义一个handler,来把字段为null的转成空串("")

2、在Mapper.xml中,把可能为空的字段,加上typeHandler属性,指定处理的handler类的全路径。

CustomStringTypeHandler.java

package com.wang.common.mybatis.handler;
import org.apache.ibatis.executor.result.ResultMapException;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * @Name: CustomStringTypeHandler
 * @Desc: 自定义mybatis处理类,将null返回为空串(‘')
 * @Author: Administrator
 * @Date: 2019-09-03 18:20
 */
@MappedTypes({String.class})
@MappedJdbcTypes(JdbcType.VARCHAR)
public class CustomStringTypeHandler extends BaseTypeHandler<String> {
  @Override
  public String getResult(ResultSet rs, String columnName) {
    String result;
    try {
      result = getNullableResult(rs, columnName);
    } catch (Exception e) {
      throw new ResultMapException("Error attempting to get column '" + columnName + "' from result set. Cause: " + e, e);
    }
    return result;
  }
  @Override
  public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
      throws SQLException {
    ps.setString(i, parameter);
  }
  @Override
  public String getNullableResult(ResultSet rs, String columnName)
      throws SQLException {
    return rs.getString(columnName) == null? "" : rs.getString(columnName);
  }
  @Override
  public String getNullableResult(ResultSet rs, int columnIndex)
      throws SQLException {
    return rs.getString(columnIndex) == null? "" : rs.getString(columnIndex);
  }
  @Override
  public String getNullableResult(CallableStatement cs, int columnIndex)
      throws SQLException {
    return cs.getString(columnIndex) == null? "" : cs.getString(columnIndex);
  }
}

Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wang.sss.fw.mapper.BusinessTripMapper">
 <resultMap id="BaseResultMap" type="com.wang.sss.fw.pojo.BusinessTrip">
  <result column="REQUEST_ID" jdbcType="VARCHAR" property="requestId" />
  <result column="JOB_NUMBER" jdbcType="VARCHAR" property="jobNumber" />
  <result column="REQUEST_DATE" jdbcType="VARCHAR" property="requestDate" />
  <result column="DEPARTMENT" jdbcType="VARCHAR" property="department" />
  <result column="BUSINESS_DAYS" jdbcType="VARCHAR" property="businessDays"/>
  <result column="CFD" jdbcType="VARCHAR" property="cfd" />
  <result column="MDD" jdbcType="VARCHAR" property="mdd" />
  <result column="START_TIME" jdbcType="VARCHAR" property="startTime" />
  <result column="END_TIME" jdbcType="VARCHAR" property="endTime" />
  <result column="REASON" jdbcType="VARCHAR" property="reason" typeHandler="com.wang.common.mybatis.handler.CustomStringTypeHandler"/>
  <result column="REMARK" jdbcType="VARCHAR" property="remark" typeHandler="com.wang.common.mybatis.handler.CustomStringTypeHandler"/>
 </resultMap>
</mapper>

没有加typeHandler属性,处理之前的查询结果:

BusinessTrip(requestId=11925, jobNumber=5721, requestDate=2019-05-06, department=57, businessDays=21, cfd=上海, mdd=南京, startTime=2019-05-06 13:36, endTime=2019-05-07 13:36, reason=null, remark=null)

增加typeHandler属性,处理后的结果:(reason和remark字段都变成了空串)

BusinessTrip(requestId=11925, jobNumber=5721, requestDate=2019-05-06, department=57, businessDays=21, cfd=上海, mdd=南京, startTime=2019-05-06 13:36, endTime=2019-05-07 13:36, reason=, remark=)

关于mybatis plus中空字符串无法保存到数据库如何解决问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. SpringBoot 整合 MyBatis-Plus 入门体验
  2. MyBatis-plus+达梦数据库实现自动生成代码的示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis 字符串 数据库

上一篇:PHP的可变变量与可变函数是什么

下一篇:企业为什么要做H5响应式网站

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》