ibatis selectKey用法注意事项

在我们使用插入数据库时,大部门ID是自增长的,需要返回ID,然后再插入相关的关系表中。但是有时候同样也会抛出问题,比如以下场景:

  1. 开始使用int做为ID自增长,返回相关的主键值,但是后来改动,改为String类型,使用UUID赋值,但是在ibatis时,依然保留如下的配置:
  2.   <insert id="insertInternet" parameterClass="dmGroupDO" >
        INSERT INTO dm_group(id,name,status,u_id,members)
         VALUES (#id#, #name#, #status#, #uId#, #members#)
          <selectKey keyProperty="id" resultClass="java.lang.String" >
          SELECT LAST_INSERT_ID() AS value
        </selectKey>
      </insert>

结果,在返回bean对象插入后,再次调用这个bean的ID时,结果返回的变成数字,因为ibatis 会将查询出来的数字类型赋值到Bean的id字段中。

时间: 2024-07-31 01:49:46

ibatis selectKey用法注意事项的相关文章

ibatis selectKey用法问题

其实就是相为SHIPMENT_HISTORY表加入一个主键sequence id shipmentHistoryId,加入一条记录,然后返回这个sequence id xml 代码 <insert id="abatorgenerated_insert" parameterClass="cn.hot.delivery.domain.ShipHistory"> insert into SHIPMENT_HISTORY (SHIPMENT_ID, RECORD

ibatis selectKey

<insert id="insert" parameterClass="A"> <selectKey keyProperty="uuid" type="pre"> select seq_sample.nextval from dual </selectKey> <![CDATA[ insert into tbl_sample(uuid,name) values (#uuid#,#nam

ibatis + log4net 配置注意事项

一 在web.config或app.config中配置 <configuration> <configSections> <sectionGroup name="iBATIS">      <section name="logging" type="IBatisNet.Common.Logging.ConfigurationSectionHandler, IBatisNet.Common"/>   

[转]js中的appendChild 和insertBefore的用法注意事项

appendChild 学过的都知道,appendChild() 方法可向节点的子节点列表的末尾添加新的子节点. 如果对它理解不深,经常会犯一些错误.我以前就是哈哈. 下面我们来分析一下. var myDiv = document.createElement_x("div"); var text = document.createTextNode("sichaoyun"); myDiv.appendChild(text); alert(myDiv.childNode

::WritePrivateProfileString()的用法,以及GetPrivateProfileString的用法注意事项

WritePrivateProfileString(_T("Section1"),_T("Field1"),Field,savePath); 函数说明,这是在写*.ini文件时使用的函数,在写ini文件的时候,可以调用这个函数,而不用使用挺费劲的关于txt文件的读写. 第一个参数为当前ini文件中节的名字. 第二个参数是ini文件中的字段名:Field1=*** 第三个参数是要写入的字符串,假设Field=1234,写出来的效果应该是:Field1=1234 第四个

JNative用法注意事项

公司要做个跟设备打交道的web系统,需要java调用dll.搞java的同事说JNative看起来挺好使的,找俺帮忙调通.用的是1.3.1版本 环境设置. JNative的调试信息需要打开才能更清楚些,要不总是说没加载库,跟没说一样. System.setProperty("jnative.debug", "true"); 如果调试信息里有System.LoadLibrary(),说明没有加载JNativeCpp.dll,指定全路径即可,双斜杠哦. System.s

vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错.今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性. erase的函数原型有两种形式: iterator erase(iterator position); iterator erase(iterator first, iterator last); vector<int> veci;veci.push_

实习小白::(转) vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错.今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性. erase的函数原型有两种形式: iterator erase(iterator position); iterator erase(iterator first, iterator last); vector<int> veci; veci.push

ie8响应式兼容方案,respond.js的用法及使用时无效的解决办法

响应式布局,html5和css3,ie8不支持,可以通过respond.js插件来实现响应. 用法注意事项 一,css样式表内容.要放在css文件中, 二,css文件必须是无bom头格式的编码文件 三,css文件必须放在head标签内进行引用.放在html中的body中引用无效. 四,css文件必须放在respond.js之前引用,respond.js可以放在body或网页底部,但为了防止闪屏,建议放在head中. 用法示例 <!doctype html> <html> <h