zoukankan      html  css  js  c++  java
  • mybatis中返回自动生成的id

    当有时我们插入一条数据时,由于id很可能是自动生成的,如果我们想要返回这条刚插入的id怎么办呢。

    在mysql数据中我们可以在insert下添加一个selectKey用以指定返回的类型和值:
        方法一:
        <insert id="addUser" parameterType="com.zhl.pojo.User">
       <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> 
            SELECT LAST_INSERT_ID() AS ID   
        </selectKey> 
        INSERT INTO 
        userinfo (name ,password, age, gender, email) 
        VALUES(#{name:VARCHAR} ,#{password:VARCHAR} ,#{age:INTEGER} ,
           #{gender:INTEGER} ,#{email:VARCHAR})
        </insert>
    其中resultType表示返回的类型。ID就是返回的刚插入的ID。
     
    在oracle中类似selectKey如下:
    <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id"> 
                SELECT LOGS_SEQ.nextval AS ID FROM DUAL 
    </selectKey>
       方法二:
        <insert id="addUser" parameterType="com.zhl.pojo.User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO userinfo (name ,password, age, gender, email) 
        VALUES(#{name:VARCHAR} ,#{password:VARCHAR} ,#{age:INTEGER} ,
           #{gender:INTEGER},#email:VARCHAR})
        </insert>
     
     
       查看返回id的具体java代码:
       public void addUser(){
       user.setPassword(user.getName());
       UserServiceImpl userService = new UserServiceImpl();
       PrintWriter w = null;
       try {
          w = ServletActionContext.getResponse().getWriter();
       } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       }
       // 执行插入操作
       int count = userService.addUser(user);
       //  执行完插入操作后,刚才的那个user中id就已经有值了
       System.out.println("count="+count+"  userId="+user.getId());
       if(count!=0){
          w.write("{"success":"success"}");
       }
       else{
          w.write("{"success":"fail"}");
       }
    }
       输出:count=1  userId=59
  • 相关阅读:
    cvxpy 示例代码
    Cora 数据集介绍
    图嵌入
    数学建模
    邮件服务器搭建
    windows安装、使用MongoDB
    Django 特殊查询
    软件测试-软件质量
    软件测试-配置管理(7)
    软件测试-缺陷管理(6)
  • 原文地址:https://www.cnblogs.com/deepbreath/p/4448224.html
Copyright © 2011-2022 走看看