Ibatis怎么返回insert时的主键

Ibatis怎么返回insert时的主键,第1张

在insert里面加入selectKey标签就可以了 一般都是返回的int类型对应数据库是自增长字段

要注意的是: ibatis会直接返回int值 Mybatis则把int值包装在参数对象里面

public int insert(User user) {

//ibatis方式

int result = UserMapperinsert(user);

return result;

//Mybatis方式

return usergetId();}还要注意的是数据库类型不一样,生成ID的策略也不一样 可以对selectKey添加属性(名字忘记了), pre---先生成ID post---后生成ID default是post

把下面哪几行放到sql后面试试

<selectKey resultType="javalangInteger" keyProperty="ID" order="BEFORE">

SELECT IBOKEE_COMM_TAG_LIBRARY_SEQnextval AS Id FROM DUAL

</selectKey>

<selectKey resultClass="int" keyProperty="id">

SELECT LAST_INSERT_ID()

</selectKey>

这句加到 </insert> 上面 就能返回主键

实体类如下:

表结构如下:

其中varId为主键,但非自增

插入时,如何查询当前最大id,并赋值给实体类,示例如下:

插入前,首先查询当前最大的id,并赋值给实体对象

如下:

插入时,获取当前最大值,插入

插入后,查询当前最大的id,并赋值给实体对象。

如下:

1in条件for循环

<select id="getBooList" resultMap="javautilMap" parameterType="javautilList" >

select booking_no, max(booking_general_seq) max_seq from interface_booking_t where booking_no in

<foreach item="item" index="index" collection="list" open="(" separator="," close=")">

#{item}

</foreach>

group by booking_no

</select>

2insert并且返回主键

<insert id="insertAndGetId" parameterType="comphymlispmanagementdomainDocument">

<selectKey resultType="long" order="BEFORE" keyProperty="id">

SELECT MLISP_DOCUMENT_SEQNEXTVAL as ID from DUAL

</selectKey>

insert into MLISP_DOCUMENT_T (ID, NAME, ALIAS,

FILE_SIZE,CONTENT,STATUS,CREATE_BY,CREATE_DATE,LAST_UPDATE_BY,

LAST_UPDATE_DATE)

values (#{id},#{name,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR},#{fileSize,jdbcType=INTEGER},

#{content,jdbcType=BLOB},

#{status,jdbcType=INTEGER},#{createBy,jdbcType=VARCHAR},SYSDATE,

#{lastUpdateBy,jdbcType=VARCHAR},SYSDATE)

</insert>

3批量insert

<insert id="batchInsert" parameterType="javautilList">

insert into INTERFACE_BOOKING_CONTA_T (ID, BOOKING_ID, BOOKING_CONTAINER_SEQ,

CONTA_TYPE, CONTA_SIZE, CONTA_QUANTITY,

CONTA_SIZE_TYPE_ISO)

select interface_booking_conta_seqNEXTVAL,A from(

<foreach collection="list" item="item" index="index" separator="UNION ALL" >

(select #{itembookingId,jdbcType=DECIMAL}, #{itembookingContainerSeq,jdbcType=DECIMAL},

#{itemcontaType,jdbcType=VARCHAR}, #{itemcontaSize,jdbcType=VARCHAR}, #{itemcontaQuantity,jdbcType=DECIMAL},

#{itemcontaSizeTypeIso,jdbcType=VARCHAR} from dual)

</foreach>) A

</insert>

4批量更新

<update id="batchUpdate" parameterType="javautilList">

<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">

UPDATE WCP_DISPATCH_CONTA_T

<set>

<if test="itemdispatchId != null">

DISPATCH_ID = #{itemdispatchId,jdbcType=DECIMAL},

</if>

</set>

WHERE DISPATCH_ID = #{itemdispatchId,jdbcType=DECIMAL}

</foreach>

</update>

针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle、DB2,可以采用如下配置方式:

1234567891011121314 <insert id="add" parameterType="voCategory"> <selectKey resultType="JavalangShort" order="BEFORE" keyProperty="id"> SELECT SEQ_TESTNEXTVAL FROM DUAL </selectKey> insert into category (name_zh, parent_id, show_order, delete_status, description ) values (#{nameZh,jdbcType=VARCHAR}, #{parentId,jdbcType=SMALLINT}, #{showOrder,jdbcType=SMALLINT}, #{deleteStatus,jdbcType=BIT}, #{description,jdbcType=VARCHAR} ) </insert>

iBatis自动生成的主键

很多数据库支持自动生成主键的数据类型 不过这通常(并不总是)是个私有的特性

SQL Map 通过<insert>的子元素<selectKey>来支持自动生成的键值 它同时支持预生成(如

Oracle)和后生成两种类型(如 MS SQL Server) 下面是两个例子

<

!—Oracle SEQUENCE Example >

<insert id= insertProduct ORACLE parameterClass= domain Product >

<selectKey resultClass= int keyProperty= id >

SELECT STOCKIDSEQUENCE NEXTVAL AS ID FROM DUAL

</selectKey>

insert into PRODUCT (PRD_ID PRD_DESCRIPTION)

values (#id# #description#)

</insert>

<!— Microsoft SQL Server IDENTITY Column Example >

<insert id= insertProduct MS SQL parameterClass= domain Product >

insert into PRODUCT (PRD_DESCRIPTION)

values (#description#)

<selectKey resultClass= int keyProperty= id >

SELECT @@IDENTITY AS ID

</selectKey>

</insert>

<! Mysql  这个例子是我自己加上去的 >

<insert id= insertProduct Mysql parameterClass= domain Product >

insert into PRODUCT(PRD_DESCRIPTION)

values (#description#)

<selectKey resultClass= int keyProperty= id >

SELECT LAST_INSERT_ID()

</selectKey>

lishixinzhi/Article/program/Oracle/201311/18089

以上就是关于Ibatis怎么返回insert时的主键全部的内容,包括:Ibatis怎么返回insert时的主键、mybatis使用oracle插入数据返回主键问题、ibatis插入问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9747531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存