当前位置: 首页 > news >正文

Mybatis获取主键自增的方法

原本的方法

使用原本的JDBC去获取主键自增的方法如下图所示:

在这段代码中,通过连接对象 connprepareStatement 方法创建了一个PreparedStatement对象,并将SQL语句和 RETURN_GENERATED_KEYS 常量作为参数传递给该方法。这意味着执行SQL语句后,PreparedStatement对象会返回生成的键值,通常用于获取自动生成的主键值或其他需要返回的键值信息。

使用Mybatis之后的方法

Mapper层

int register(@Param("user")User user);

xml文件

<insert id="register" parameterType="com.xszx.beans.User" useGeneratedKeys="true" keyProperty="id">insert into user(loginname, pwd)  values (#{user.loginname},#{user.pwd})</insert>

Servlet层

 User user = new User();String name = req.getParameter("name");String pwd = req.getParameter("pwd");user.setLoginname(name);user.setPwd(pwd);userMapper.register(user);System.out.println(user.getId());

当servlet层中调用了register(user)方法时,会先去mapper层中找到该方法,然后系统会去xml文件中扫描对应的方法,此时我们首先要确保数据库的主键是自动递增的,这样,当你插入数据时,MyBatis 会自动获取生成的 ID 并将其设置到 User 对象的 id 属性上。

  1. parameterType="com.xszx.beans.User" 表示这个<insert>语句期望的参数是一个User对象,这个对象应该包含loginnamepwd属性。

  2. useGeneratedKeys="true"keyProperty="id" 表示MyBatis应该使用数据库生成的键(通常是自增ID)来填充User对象的id属性。

  3. insert into user(loginname, pwd) values (#{user.loginname},#{user.pwd}) 是SQL插入语句,它将User对象的loginnamepwd属性插入到user表中。

注意

此方法并不是直接返回自增的id,而是将自增的id赋值给了user对象的id值,所以我们如果想获取自增id,那么我们应该使用user.getId()的方法来获取。

http://www.lryc.cn/news/425238.html

相关文章:

  • strip 、objdump、objcopy 差异与区别
  • 本地phpstudy部署算命系统,用户端是H5页面,支持微信支付宝支付,支持微信支付宝登录
  • APP上架苹果App Store被拒原因及解决方案
  • docker-compose的下载
  • h3c虚拟园区网概述
  • 云原生和安装Ubuntu 22系统
  • HTTP代理IP如何助力旅游大数据领域?怎么建立安全的代理隧道连接?
  • AIGC从入门到实战:基础理论【核心算法与模型】
  • 极狐GitLab 17.2发布了哪些 JH-Only 的功能?
  • css中的高度塌陷
  • 怎样使用sudo的时候不需要输入密码?
  • kettle的Javascript组件获取T-1天和T+1天
  • YoloV8改进策略:Block改进|LeYOLO,一种用于目标检测的新型可扩展且高效的CNN架构|复现LeYolo,轻量级Yolo改进
  • ODX(Open Diagnostic Data Exchange)简介
  • 记一次CSDN认证模块后端未校验漏洞
  • 【图机器学习系列】(一)图机器学习简介
  • 全网最详细,从一堆字符串,精确抓取想要日期时间的实战2.0
  • 24/8/15算法笔记 dp策略迭代 价值迭代
  • 【MMdetection改进】换遍MMDET主干网络之SwinTransformer-Tiny(基于MMdetection)
  • FL Studio21.2.4最新中文版免费下载汉化包破解补丁
  • 私域场景中的数字化营销秘诀
  • 一键换肤(Echarts 自定义主题)
  • Unity 6 预览版正式发布
  • 如何跳过极狐GitLab 密钥推送保护功能?
  • Android高版本抓包总结
  • 《AI视频类工具之五——​ 开拍》
  • 面试经典算法150题系列-最后一个单词的长度
  • RTT学习
  • 前端面试题(二十五)|附赠完整面试流程
  • 【分布式系统】关于主流的几款分布式链路追踪工具