一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - 解決mybatis plus字段為null或空字符串無法保存到數(shù)據(jù)庫的問題

解決mybatis plus字段為null或空字符串無法保存到數(shù)據(jù)庫的問題

2021-08-10 12:00toalaska Java教程

這篇文章主要介紹了解決mybatis plus字段為null或空字符串無法保存到數(shù)據(jù)庫的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

背景

項(xiàng)目中集成了mybatis plus, 今天在做后臺(tái)的一個(gè)常規(guī)的增刪改查時(shí),發(fā)現(xiàn)字段值為null時(shí),這個(gè)字段不會(huì)被保存到數(shù)據(jù)庫

解決辦法

在字段上加上

?
1
@TableField(strategy = FieldStrategy.IGNORED)

strategy字段更新插入策略屬性說明:

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

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

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

另外一種方式可全局配置,未親手實(shí)踐。

補(bǔ)充:Mybatis查詢數(shù)據(jù)部分字段顯示為null,怎么轉(zhuǎn)成空串("")

1、先定義一個(gè)handler,來把字段為null的轉(zhuǎn)成空串("")

2、在Mapper.xml中,把可能為空的字段,加上typeHandler屬性,指定處理的handler類的全路徑。

CustomStringTypeHandler.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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屬性,處理之前的查詢結(jié)果:

?
1
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屬性,處理后的結(jié)果:(reason和remark字段都變成了空串)

?
1
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=)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/toalaska/article/details/90085250

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国语精彩对白2021 | 午夜福利电影网站鲁片大全 | 男女视频在线观看网站 | 国产成人免费高清激情明星 | 国内自拍网红在线自拍综合 | 粗暴hd另类另类 | 国产性片在线观看 | 成年人视频免费在线播放 | 草莓视频幸福宝 | 日韩理论片在线看免费观看 | 99精品影院 | 国产一页 | oneday日本在线观看完整版 | 喜欢老头吃我奶躁我的动图 | 国产亚洲精品看片在线观看 | 99午夜| 日本免费高清在线 | 日本妇人成熟免费观看18 | 999精品视频这里只有精品 | 麻豆网站在线观看 | 欧美办公室silkstocking | 亚洲成人99 | 亚洲天堂.com | 日韩在线免费播放 | 饭冈加奈子黑人解禁在线播放 | 国产小视频在线免费 | 性一交一乱一伧老太 | 描写细腻的高h肉 | 日韩精品一区二区 | 农夫69小说小雨与农村老太 | 爱福利一区二区 | 日韩成人精品 | 国产一级特黄aa大片在线 | 四虎comwww最新地址 | 岛国最新资源网站 | 国士李风起全文在线阅读 | 久久综合中文字幕佐佐木希 | zoo性欧美 | 亚洲欧美韩国日产综合在线 | 亚洲精品国产福利片 | 69日本人 |