mybatis+oracle添加一条数据并返回所添加数据的主键问题

最近做mybatis+oracle项目的时候解决添加一条数据并返回所添加数据的主键问题

controller层

@RequestMapping("/addplan")
    public @ResponseBody OnlineAddplanWithBLOBs insertOnlineAddplan(OnlineAddplanWithBLOBs plan) throws Exception{
              //plan是添加的数据,planid为数据主键,此时对象中主键为null
        int n = service.insertOnlineAddplan(plan);
         //获取对象主键
        System.out.println("返回的主键值是"+plan.getPlanid()); 

        return plan;
    }

在mapperx.xml中

<insert id="insert" parameterType="com.online.pojo.OnlineAddplanWithBLOBs" >

    //获取序列值,并赋值到对象的planid字段
    <selectKey keyProperty="planid" resultType="DECIMAL" order="BEFORE">
            select online_sequence.nextval from dual
    </selectKey>

    insert into ONLINE_ADDPLAN (PLANID, COMPLETETIME, PERSON,
      OPERATION, USERNAME, EVENTNODE,
      WORKPLAN, CHENGGUOMIAOSHU)  //获取上面对象中planid字段的值
    values (#{planid,jdbcType=DECIMAL}, #{completetime,jdbcType=TIMESTAMP}, #{person,jdbcType=VARCHAR},
      #{operation,jdbcType=VARCHAR}, #{username,jdbcType=VARCHAR}, #{eventnode,jdbcType=CLOB},
      #{workplan,jdbcType=CLOB}, #{chengguomiaoshu,jdbcType=CLOB})
  </insert>
时间: 2024-08-07 03:36:21

mybatis+oracle添加一条数据并返回所添加数据的主键问题的相关文章

MyBatis 插入时返回刚插入记录的主键值

MyBatis 插入时返回刚插入记录的主键值 一.要求: 1.数据库表中的主键是自增长的,如:id: 2.获取刚刚插入的记录的id值: 二.源代码: 1.User.java 1 package cn.com.zfc.model; 2 3 public class User { 4 5 private Integer id; 6 private String name; 7 private String password; 8 9 public Integer getId() { 10 retur

使用SQLServer2005插入一条数据时返回当前插入数据的ID

在执行完插入后 再执行 select @@identity from users 就OK 就是刚才插入的那行的 ID了 补充: @@identity 表示当前新增的主键ID 这个是在一个session中查找的, SELECT MAX(id) FROM Users 执行这个查询,就可以返回最新的ID   来自为知笔记(Wiz)

合同主体列表添加两条合同主体,返回合并支付页面,支付总弹&quot;请选择合同主体&quot;,删除后,竟然还能支付(改合并支付页面的字段状态)

bug描述: 操作步骤:1.进入"商标续展"产品详情页面,点击立即购买(数量设为2),进入合并订单界面,选择合同主体,点击全部,清空所有合同主体2.新建合同主体保存,设置该合同主体为默认合同主体,返回到合并订单界面3.点击"去支付"4.点击选择合同主体,选中刚刚新建的合同主体绑定到该订单5.删除该合同主体,再新建一个合同主体保存,并设置该合同主体为默认合同主体结果:第三步:提示"请选择合同主体",不能支付第四步:能跳到支付界面,但是提示"

mybatis insert语句 返回插入的记录的主键值

Map<String,Object> paymentMp = new HashMap<String,Object>();        paymentMp.put("amount", 12.0 );        paymentMp.put("pay", Attributes.Payment_Pay_No);        paymentMp.put("status", Attributes.Payment_Status_

[技术分享]20171214_oracle_带rownum的查询语句查询出重复数据:原因是order by没有加主键

原始的sql是这样的: select * from( select tmp.*,rownum rn from( select * from table1 where column1 ='12345' order by column2,column3 desc ) tmp where rownum<=30 ) where rn>20 问题:在我的项目中,当rownum<=20 , rn>10的数据和rownum<=30 , rn>20的数据一样. 解决办法:后来在orde

MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro

通过mybatis添加数据记录时,如何返回主键

java private SqlSession session = null; @BeforeClass public void init() throws IOException { // SqlSession--->SqlSessionFatory----->SqlSessionFatoryBuilder SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder(); InputStream ins = Resources.ge

使用mybatis注解@Options实现添加记录时返回主键值

官网:http://www.mybatis.org/mybatis-3/index.html 在使用mybatis作为ORM框架时,我通常更喜欢使用注解而非xml配置文件的方式.业务场景:添加记录之后需要返回自己自增长的主键字段值.通常,我们会将DAO层写成如下代码(以添加员工Staff为例): public interface StaffDAO { @InsertProvider(type=StaffProvider.class, method="buildSinleStaff")

mybatis主键返回的实现

向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public intinsertUser(User user) throw