mybatis判斷int是否為空的時候,需要注意的3點
mybatis判斷int是否為空的注意點
1、int為空時會自動賦值0,所以必須用integer作為javaBean的屬性值類型。
2、必須注意封裝的get.set。也是Integer.不然也會報錯。
3、注意好以上兩個點,直接用null判斷
例子:
public class ExcelPutVo { private Integer startTime;// 開始時間 private Integer endTime;// 截止時間 private int sentId;// 下達者id private String onlyUuid;// 唯一標識 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
<!-- 導出excel的數據查詢 --> <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 時報錯
當 mybatis 試圖把 null 字段映射到 java 中的 int 類型時,會報這個錯。
Caused by: java.lang.RuntimeException: Error setting property 'setTotal_count' of 'com.webank.ccs.benefit.data.BenefitJobStatBOA@3973f34c'. Cause: java.lang.IllegalArgumentException
解決方法
如果這個字段不參與計算,則 java 中的數據類型可以設置為 String,這個 String 引用類型的變量就可以映射 null 了。
同樣的情況還適應于數據庫中的 Date 類型,若 java 中的映射字段不需要參與計算,則可以直接設置 java 中的類型為 String,這樣做的好處是,mysql 中的類型為 Date 類型,查詢條件可以直接使用如下格式的字符串去匹配: yyyy-MM-dd 或 yyyyMMdd 甚至是 yyMMdd,甚至是 yy-MM-dd 都可以匹配。
但是對于 mysql 中的金額,一般情況下要映射為 BigDecimal ,這樣精確一些。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Eclipse添加xml文件提示及Hibernate配置學習
文件提示功能在開發(fā)過程中很實用的,本文實現了一個Eclipse添加xml文件提示,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01Spring Cloud Data Flow初體驗以Local模式運行
這篇文章主要介紹了Spring Cloud Data Flow初體驗以Local模式運行,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析
這篇文章主要介紹了Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01