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) {
}
public Integer getStartTime() {
return startTime;
}
public void setStartTime(Integer startTime) {
this.startTime = startTime;
}
public Integer getEndTime() {
return endTime;
}
public void setEndTime(Integer endTime) {
}
mybatis的xml
<!-- 导出excel的数据查询 -->
<select id="selectByExcelPutVo" resultMap="BaseResultMap"
parameterType="ity.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
's.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 都可以匹配。
bigdecimal转换为integer但是对于 mysql 中的⾦额,⼀般情况下要映射为 BigDecimal ,这样精确⼀些。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。