最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年02月20日 08:50:14   作者:toalaska  
這篇文章主要介紹了解決mybatis plus字段為null或空字符串無法保存到數(shù)據(jù)庫的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

背景

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

解決辦法

在字段上加上

@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

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屬性,處理之前的查詢結(jié)果:

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字段都變成了空串)

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è)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Spring mvc文件上傳下載代碼實(shí)例

    Spring mvc文件上傳下載代碼實(shí)例

    這篇文章主要介紹了Spring mvc文件上傳下載代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java8 Comparator排序方法實(shí)例詳解

    Java8 Comparator排序方法實(shí)例詳解

    這篇文章主要介紹了Java8 Comparator排序方法實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 集成apollo動(dòng)態(tài)日志取締logback-spring.xml配置

    集成apollo動(dòng)態(tài)日志取締logback-spring.xml配置

    這篇文章主要為大家介紹了集成apollo動(dòng)態(tài)日志取締logback-spring.xml配置的過程內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(43)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(43)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • 解決mybatis resultMap根據(jù)type找不到對(duì)應(yīng)的包問題

    解決mybatis resultMap根據(jù)type找不到對(duì)應(yīng)的包問題

    這篇文章主要介紹了解決mybatis resultMap根據(jù)type找不到對(duì)應(yīng)的包問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • C語言指針數(shù)組案例詳解

    C語言指針數(shù)組案例詳解

    這篇文章主要介紹了C語言指針數(shù)組案例詳解,本文通過案例詳細(xì)的解釋了指針與數(shù)組的初始化還有關(guān)系與應(yīng)用,需要的朋友可以參考下這篇文章
    2021-07-07
  • SpringBoot中使用MongoDB的連接池配置

    SpringBoot中使用MongoDB的連接池配置

    由于MongoDB的客戶端本身就是一個(gè)連接池,因此,我們只需要配置客戶端即可,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 一文詳解Mybatis-plus的介紹與使用

    一文詳解Mybatis-plus的介紹與使用

    Mybatis-Plus?是?MyBatis?的一個(gè)增強(qiáng)工具,專門針對(duì)于傳統(tǒng)MyBatis開發(fā)中sql需要手動(dòng)進(jìn)行映射配置繁瑣缺點(diǎn)的一款框架技術(shù)。本文將為大家詳細(xì)講講Mybatis-plus的介紹與使用,感興趣的可以了解一下
    2022-07-07
  • Springboot整合Shiro的代碼實(shí)例

    Springboot整合Shiro的代碼實(shí)例

    這篇文章主要介紹了Springboot整合Shiro的代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java并發(fā)編程之ReentrantLock可重入鎖的實(shí)例代碼

    Java并發(fā)編程之ReentrantLock可重入鎖的實(shí)例代碼

    這篇文章主要介紹了Java并發(fā)編程之ReentrantLock可重入鎖的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論

无棣县| 长兴县| 武义县| 曲阜市| 西平县| 安阳市| 井冈山市| 瑞金市| 台南县| 东明县| 中江县| 无锡市| 华阴市| 延庆县| 梨树县| 利津县| 平远县| 会东县| 花莲县| 德保县| 札达县| 讷河市| 信阳市| 普宁市| 廉江市| 中山市| 张北县| 盱眙县| 武威市| 黄龙县| 于田县| 屯留县| 黄骅市| 榆中县| 桂东县| 德州市| 稻城县| 耒阳市| 上虞市| 于田县| 将乐县|