mybatis中返回自动生成的id
2024-09-05 19:43:03
当有时我们插入一条数据时,由于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
最新文章
- 修改jetty的默认端口号
- jmobile学习之路 ---- 视口
- 洛谷P2158 [SDOI2008]仪仗队
- C#搜索指定文件夹内的符合要求的文件
- SQLSERVER不带JOIN的语句与带JOIN语句的区别
- angularjs 过滤器详解
- linux下转换U盘文件系统
- 【C51】74HC573芯片
- JS 点击复制Copy (share)
- 【MVC】ASP.NET MVC HtmlHelper用法大全
- oracle 判断是不是数值/数字
- 从链接上获取参数值, location.href上获取参数
- 用汇编语言研究C语言的全局变量、局部变量、参数、返回值放在哪里
- [Google Code Jam (Qualification Round 2014) ] B. Cookie Clicker Alpha
- 解决IE6 IE7 JSON.stringify JSON 未定义问题
- Linux01--文件管理,常用命令 权限管理
- input 和raw_input
- 我也谈javascript闭包的原理理解
- SpaceNet数据集
- Spring——事务