mybatis判斷int是否為空的時(shí)候,需要注意的3點(diǎn)
mybatis判斷int是否為空的注意點(diǎn)
1、int為空時(shí)會(huì)自動(dòng)賦值0,所以必須用integer作為javaBean的屬性值類型。
2、必須注意封裝的get.set。也是Integer.不然也會(huì)報(bào)錯(cuò)。
3、注意好以上兩個(gè)點(diǎn),直接用null判斷
例子:
public class ExcelPutVo {
private Integer startTime;// 開始時(shí)間
private Integer endTime;// 截止時(shí)間
private int sentId;// 下達(dá)者id
private String onlyUuid;// 唯一標(biāo)識(shí)
public int getSentId() {
return sentId;
}
public void setSentId(int sentId) {
this.sentId = sentId;
}
public String getOnlyUuid() {
return onlyUuid;
}
public void setOnlyUuid(String onlyUuid) {
this.onlyUuid = onlyUuid;
}
public Integer getStartTime() {
return startTime;
}
public void setStartTime(Integer startTime) {
this.startTime = startTime;
}
public Integer getEndTime() {
return endTime;
}
public void setEndTime(Integer endTime) {
this.endTime = endTime;
}
mybatis的xml
<!-- 導(dǎo)出excel的數(shù)據(jù)查詢 -->
<select id="selectByExcelPutVo" resultMap="BaseResultMap"
parameterType="com.zeng.zhdj.wy.entity.vo.ExcelPutVo">
select *
from count_use
<where>
1=1
<if test="sentId != null">
and sent_id=#{sentId,jdbcType=INTEGER}
</if>
<if test="endTime != null">
and count_end_month <=#{endTime,jdbcType=INTEGER}
</if>
<if test="startTime!= null">
and count_start_month >=#{startTime,jdbcType=INTEGER}
</if>
<if test="onlyUuid != null">
and only_type=#{onlyUuid,jdbcType=VARCHAR}
</if>
</where>
</select>
mybatis 映射 null 為 int 時(shí)報(bào)錯(cuò)
當(dāng) mybatis 試圖把 null 字段映射到 java 中的 int 類型時(shí),會(huì)報(bào)這個(gè)錯(cuò)。
Caused by: java.lang.RuntimeException: Error setting property 'setTotal_count' of 'com.webank.ccs.benefit.data.BenefitJobStatBOA@3973f34c'. Cause: java.lang.IllegalArgumentException
解決方法
如果這個(gè)字段不參與計(jì)算,則 java 中的數(shù)據(jù)類型可以設(shè)置為 String,這個(gè) String 引用類型的變量就可以映射 null 了。
同樣的情況還適應(yīng)于數(shù)據(jù)庫(kù)中的 Date 類型,若 java 中的映射字段不需要參與計(jì)算,則可以直接設(shè)置 java 中的類型為 String,這樣做的好處是,mysql 中的類型為 Date 類型,查詢條件可以直接使用如下格式的字符串去匹配: yyyy-MM-dd 或 yyyyMMdd 甚至是 yyMMdd,甚至是 yy-MM-dd 都可以匹配。
但是對(duì)于 mysql 中的金額,一般情況下要映射為 BigDecimal ,這樣精確一些。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟
這篇文章主要介紹了SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Eclipse添加xml文件提示及Hibernate配置學(xué)習(xí)
文件提示功能在開發(fā)過程中很實(shí)用的,本文實(shí)現(xiàn)了一個(gè)Eclipse添加xml文件提示,感興趣的朋友可以了解下啊,希望本文對(duì)你有所幫助2013-01-01
Maven添加Tomcat插件實(shí)現(xiàn)熱部署代碼實(shí)例
這篇文章主要介紹了Maven添加Tomcat插件實(shí)現(xiàn)熱部署代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解
這篇文章主要為大家介紹了Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Maven配置文件settings.xml的實(shí)現(xiàn)
Maven是一個(gè)用于構(gòu)建和管理Java項(xiàng)目的強(qiáng)大工具,它依賴于設(shè)置文件來配置和管理其行為,其中最重要的之一便是settings.xml文件,本文主要介紹了Maven配置文件settings.xml的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Spring Cloud Data Flow初體驗(yàn)以Local模式運(yùn)行
這篇文章主要介紹了Spring Cloud Data Flow初體驗(yàn)以Local模式運(yùn)行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析
這篇文章主要介紹了Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01

