`
Folix
  • 浏览: 12229 次
社区版块
存档分类
最新评论

Mybatis下Oracle,Mysql插入返回主键

阅读更多

Model代码:

 

 

public class Task {

	private Long taskId;
	private String message;
       
        //setter and getter
	
}

 

 

Oracle:

这里就用Mybatis的generator工具生成的XML模板做例子

 

说明:

1、sel_task_id 是自己在Oracle中建立的seq

2、resultType是主键的类型,order是表示在insert语句之前运行还是之后,keyProperty代表的是Task的主键。

3、特别注意,用了selectKey之后,需要删除generator工具生成的主键if条件判断,不然会报ORA-01400: 无法将 NULL 插入 TASK_ID 的错误

4、这条insert语句返回的依然是插入的条数1,task的主键会自动加载到model的Task中,成功后就可以直接操作Task获取主键了.

 

 

<insert id="insertSelective" parameterType="cn.model.Task">
    <selectKey resultType="Long" order="BEFORE" keyProperty="taskId" >
      select seq_task_id.nextval as taskId  from dual
    </selectKey>
    insert into TASK
    <trim prefix="(" suffix=")" suffixOverrides="," >
        TASK_ID,
      <if test="message != null" >
        MESSAGE,
      </if>
     </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
       #{taskId,jdbcType=DECIMAL},
      <if test="message!= null" >
        #{message,jdbcType=VARCHAR},
      </if>
     </trim>
  </insert>

 

 

MYSQL:

这个没什么可说明的,比较简单。

 

<insert id="insert" useGeneratedKeys="true" keyProperty="taskId" parameterType="cn.model.Task">
	insert into TASK(TASK_ID,MESSAGE)
	values(#{taskId},#{message})
</insert>

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics