MyBatis进行CRUD中添加数据实现主键回填

文章目录

  • MyBatis进行CRUD中添加数据实现主键回填
    • 1、创建一个mybatis项目
    • 2、实现添加数据时主键回填
      • 在MyBatisTest.java中添加下面方法
      • 在UserMapper.java中添加对应的属性
      • 在UserMapper.xml中添加sql语句如下
      • 运行结果如下(取消commit方法注释后就不会出现Rolling back回滚进行真实添加了):

MyBatis进行CRUD中添加数据实现主键回填

1、创建一个mybatis项目

可以参考之前的博文mybatis首次使用并查询数据库数据
下文在该项目基础上进行优化操作,UserDao.java改名为UserMapper.java,UserDao.xml改名为UserMapper.xml,也可以不改名字内容一样。

2、实现添加数据时主键回填

在MyBatisTest.java中添加下面方法

@Testpublic void testAddUser(){UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = new User();user.setUsername("周芷若");user.setPassword("111");user.setBirthday(new Date());user.setSex("女");user.setAddress("峨眉山");userMapper.addUser(user);System.out.println("返回自增id:"+user.getId());//sqlSession.commit();}

在UserMapper.java中添加对应的属性

void addUser(User user);

在UserMapper.xml中添加sql语句如下

<!--useGeneratedKeys="true":使用自增idkeyProperty="id":回填到实体类的哪个属性--><insert id="addUser" useGeneratedKeys="true" keyProperty="id" parameterType="cn.fpl1116.pojo.User"><!--逐渐回填(返回自增id):插入记录后返回自增的id到参数keyProperty="id":回填到实体类的哪个属性order="AFTER":先执行插入,再主键回填resultType="java.lang.Integer":主键的类型<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">SELECT LAST_INSERT_ID()</selectKey>-->INSERT INTO user(username,password,birthday,sex,address) VALUES(#{username},#{password},#{birthday},#{sex},#{address})</insert>

运行结果如下(取消commit方法注释后就不会出现Rolling back回滚进行真实添加了):

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/288772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外问卷使用动态ip和静态ip有哪些优缺点?

使用动态IP的优点包括&#xff1a; 1、高度匿名性&#xff1a;通过动态切换IP地址来隐藏用户的真实身份&#xff0c;提供更高的匿名性&#xff0c;确保数据的安全。 2、成本效益&#xff1a;相对于静态IP而言&#xff0c;动态IP的获取和使用成本更低&#xff0c;对于短期或小规…

牛客BC115 超级圣诞树

万众瞩目 在上一篇我们介绍了一个圣诞树的打印&#xff0c;而这道题与上次不同的是他的基本单位是一直在变的 我建议先把上一个搞懂在写这道题这个。 牛客网BC114 圣诞树-CSDN博客 ok那么正文开始 题目如下 今天是圣诞节&#xff0c;牛牛要打印一个漂亮的圣诞树送给想象中…

字符串逆序输出

逆序输出就是本来abc输出的&#xff0c;然后我想让他输出成cba&#xff0c;那么我们还是要用到for循环&#xff0c;只不过原先是从零开始往上加&#xff0c;这回呢&#xff0c;是从上面往下减 我们观察上面这个图片&#xff0c;我们想要输出olleh&#xff0c;那么我们就要从4开…

甘草书店:#12 2023年12月18日 星期一 晴 创业分享:「甘草书店之于甘草创投的意义」

尽管甘草书店的初衷简单而纯粹&#xff0c;就是在做很多书店人都在做的“书店”&#xff0c;只不过我这里加的是创业投资。但社会和市场更喜欢从反方向提问&#xff1a;你做创投就做创投&#xff0c;为什么要开家书店&#xff1f; 对于我个人&#xff0c;当然有一套自我说服的…

[PyTorch][chapter 8][李宏毅深度学习][Back propagation]

前言&#xff1a; 反向传播算法(英:Backpropagation algorithm&#xff0c;简称:BP算法)是一种监督学习算法&#xff0c;常被用来训练多层感知机。 它用于计算梯度计算中&#xff0c;降低误差。 目录&#xff1a; 链式法则 模型简介&#xff08;Model&#xff09; 损失函…

Java实现限流算法

下面是一个使用Java实现的令牌桶算法的例子&#xff1a; import java.util.concurrent.atomic.AtomicLong;public class RateLimiter {private final long capacity; // 令牌桶容量private final long rate; // 令牌生成速率private AtomicLong tokens; // 当前令牌数量privat…

RAII智能指针

RAII resource acquisition is initialization RAII是利用对象声明周期来控制程序资源的简单技术 在对象构造时获取资源&#xff0c;控制着对资源的访问使之在对象的生命周期内始终保持有效&#xff0c;最后在对象析构的时候释放资源。借此&#xff0c;我们实际上把管理一份资源…

2024Web自动化测试的技术框架和工具有哪些?

Web 自动化测试是一种自动化测试方式&#xff0c;旨在模拟人工操作对 Web 应用程序进行测试。这种测试方式可以提高测试效率和测试精度&#xff0c;减少人工测试的工作量和测试成本。在 Web 自动化测试中&#xff0c;技术框架和工具起着至关重要的作用。本文将介绍几种常见的 W…

VM安装Sonoma【笔记】

VMware Workstation安装MacOS Sonoma 1、配置虚拟机&#xff0c;根据系统性能调整参数&#xff1b; 2、先不焦急启动虚拟机&#xff0c;打开虚拟机存储目录&#xff0c;以文本方式打开.vmx文件&#xff08;这里以Sonoma.vmx为例&#xff09;&#xff1b; 这里只针对Inter CP…

vue-springboot二手图书商城交易系统ij5dr

本系统依赖于MySQL数据库来储存信息&#xff0c;系统完成后&#xff0c;所有需要的数据都要从数据库中读取&#xff0c;这也意味着无论是插入、更新还是删除操作&#xff0c;只要对数据有改动的操作都需要与数据库交互&#xff0c;因此&#xff0c;系统的全部数据都要储存在数据…

C++相关闲碎记录(18)

1、strftime()的转换指示器 #include <locale> #include <chrono> #include <ctime> #include <iostream> #include <exception> #include <cstdlib> using namespace std;int main () {try {// query local time:auto now chrono::syste…

Python 多维数组详解(numpy)

文章目录 1 概述1.1 numpy 简介1.2 ndarray 简介 2 数组操作2.1 创建数组&#xff1a;array()2.2 裁切数组&#xff1a;切片2.3 拼接数组&#xff1a;concatenate()2.4 拆分数组&#xff1a;array_split()2.5 改变数组形状&#xff1a;reshape() 3 元素操作3.1 获取元素&#x…