ibatis中的空值处理

   今天碰到一个问题,那就是数据库的空值处理问题;其实这个问题也是老生常谈了,如果是在命令行里面打命令的话估计不会有什么问题;关键是现在的开发中到少不了用orm进行持久层的处理的了,具体原因在这里不在赘述;现在的开发中,我用的是ibatis;今天的问题是这样的把 一个对象的各个属性保存到为一条记录的字段,这问题才普通不过了;问题是如果属性是空的话怎么办了,想过把一个默认值赋予对象的属性,但感觉这样的思路非常的别扭,一个方面是由于加大了不必要的工作量,二是数据库那端也比较难管理;为了健忘,整理如下:

 

<insert id="saveMpsOperatorAuthority">
        insert into mps_OperatorAuthority (infoId,companyId,localId,operatorId)
        values (mps_OperatorAuthority_seq.nextVal,#companyId:NUMERIC#,#localId:VARCHAR# ,#operatorId#)
    </insert>

 

以上的配置的意思就是如果插入对象的companyId属性为null,则把numberic类型的默认值插入数据库,localid属性做同样的处理;需要留意的是 一定要写成NUMERIC 不能写成NUMBER(如果是日期类型,精确到秒的则用TIMESTAMP) ,否则插入时候就会有异常,今天为这个问题搞了好几个小时 ,先顶了;

 

同样的道理,如果要把数据库中的记录影射成对象的各个属性也面临着同样的问题,那 就是如果数据库中该字段为空则对象属性作何处理,具体如下:

 

<resultMap id="result"
        class="com.skywin.mps.model.MpsOperatorAuthority">
        <result property="infoId" column="infoId" columnIndex="1" />
        <result property="companyId" column="companyId" columnIndex="2" jdbcType="NUMERIC" />
        <result property="localId" column="localId" columnIndex="3" jdbcType="VARCHAR"/>
        <result property="operatorId" column="operatorId" columnIndex="4" jdbcType="VARCHAR" />

    </resultMap>

 

这里的jdbcType="NUMERIC"中的NUMERIC和NUMBER可以互换,也就是两者中写哪一个都可以,为了这个问题弄了半天真是郁闷,不过到头来还是很High;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值