博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用mybatis插入数据(insert)时返回主键的问题
阅读量:5158 次
发布时间:2019-06-13

本文共 1970 字,大约阅读时间需要 6 分钟。

使用mybatis做插入操作时,想要获取新增记录的主键,我发现现在的方式和以前的方式有所区别,即以前是直接通过方法返回,现在是将主键设置在数据实体对象中。

下面对mybatis进行insert时返回主键的问题进行说明。如果有不同意见和想法的朋友可以留言指出。

表结构:

-- Create tablecreate table USER_INFO(  id        VARCHAR2(32),  login_id  VARCHAR2(50),  password  VARCHAR2(32),  user_name VARCHAR2(50),  status    VARCHAR2(2));-- Add comments to the table comment on table USER_INFO  is '用户信息表';-- Add comments to the columns comment on column USER_INFO.id  is '主键';comment on column USER_INFO.login_id  is '账号';comment on column USER_INFO.password  is '密码';comment on column USER_INFO.user_name  is '用户名';comment on column USER_INFO.status  is '有效状态(0:失效;1:有效)';

Mapper.xml中insert配置

select User_Info_sq.nextval as id from dual
insert into user_info( ID, LOGIN_ID, PASSWORD, USER_NAME, STATUS) values( #{id}, #{login_id}, #{password}, #{user_name}, #{status} )

id是主键,我创建了序列来给id赋值,值从1开始,每次增加1。如果要返回主键,需要有<selectKey></selectKey>,这样即给insert语句中的id赋值,同时也是返回主键的设置。

DAO中方法为:

public String insertUserInfo(UserInfo userInfo);

这样在插入成功后就能接收到新增记录的主键。

String id=userInfoService.insertUserInfo(ui);

但是最近我使用上面这种方法,在注册的时候就会报错,在查询了很多之后才发现问题,就是现在的插入方法返回值只是插入的记录条数,而主键是在插入数据的实体类对象中。

新代码

DAO中方法为:

public int insertUserInfo(UserInfo userInfo);

Controller中代码:

UserInfo ui=new UserInfo();ui.setLogin_id(userInfo.getLogin_id());ui.setUser_name(userInfo.getUser_name());ui.setPassword(MD5Utils.getMD5_32bits(userInfo.getPassword()));ui.setStatus("1");int num=userInfoService.insertUserInfo(ui);

num是插入的记录数,而主键是在ui对象中的,即

String id=ui.getId();

转载于:https://www.cnblogs.com/lizs0314/p/9667238.html

你可能感兴趣的文章
Django框架(十九)—— drf:序列化组件(serializer)
查看>>
JS一些概念知识及参考链接
查看>>
关于JS中&&和||用法技巧
查看>>
suoi14 子树查找 (dfs)
查看>>
正则替换 php js
查看>>
2018.12.17断点调试,js引入,变量定义,三种弹出框,数据类型,数据类型转换
查看>>
python 全栈开发,Day34(基于UDP协议的socket)
查看>>
GIS在石油行业中的应用
查看>>
Android流量统计
查看>>
iOS UIScrollview 和侧滑手势冲突解决方法
查看>>
实验四+087+饶慧敏
查看>>
python基本操作之列表,元组,string字符串
查看>>
Spring Boot热部署 学习笔记
查看>>
Android之Adapter用法总结
查看>>
CF1106F Lunar New Year and a Recursive Sequence
查看>>
<iframe> 标签 中 src 的三种形式. display , echart
查看>>
MATLAB 程序计算结果出现 复数(a+bi)问题
查看>>
An Android APK is really a zip file
查看>>
Linux常用命令大全(转)
查看>>
poj 3669 Meteor Shower
查看>>