MyBatis 实现主键回写

2024-05-15 02:08
文章标签 实现 主键 mybatis 回写

本文主要是介绍MyBatis 实现主键回写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当我们向数据库插入数据时,主键是设置的自增的,但是我们插入好数据库后,我们希望得到刚刚插入的数据的主键,mybatis可以实现这样的功能
应用场景:
员工与部门,当新员工进公司,该员工肯定属于某个部门,插入数据的时候,要告诉部门表,这个员工属于哪个部门

数据库表

这里写图片描述

mapper.xml文件代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserDaoMapper"><!-- 插入statement useGeneratedKeys:开启主键回写keyColumn:主键列名(既数据库表中的列名)keyProperty:主键对应的属性名(实体中的属性名)插入数据时,传过来的参数是一个对象,#{***}中的名字必须与对象中属性名一致--><insert id="saveUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id">INSERT INTO tb_user (user_name,password,name,age,sex,birthday,created,updated)VALUES(#{userName},#{password},#{name},#{age},#{sex},#{birthday},NOW(),NOW())</insert>
</mapper>

mybatis-config.xml文件代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 引入外部属性资源 --><properties resource="jdbc.properties"  /><settings><!-- 设置驼峰匹配 --><setting name="mapUnderscoreToCamelCase" value="true" /></settings><typeAliases><!-- package 扫描该包下的类,别名就是类名--><package name="cn.itcast.domain"/></typeAliases><environments default="development" ><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><!-- 指定驱动类 --><property name="driver" value="${jdbc.driverClass}" /><!-- 指定连接地址 --><property name="url" value="${jdbc.url}" /><!-- 指定数据库登录用户 --><property name="username" value="${jdbc.username}" /><!-- 数据库密码 --><property name="password" value="${jdbc.password}" /></dataSource></environment></environments><!-- 引入map文件 --><mappers><mapper resource="UserDaoMapper.xml"/></mappers>
</configuration>

jdbc.properties文件

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123

Test测试类


public class UserDaoTest {private SqlSession sqlSession;@Beforepublic void setUp() throws IOException {// 加载mybatis-config.xml文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");// 创建sqlSessionFactory的构造器SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 创建sqlSession工厂SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);// 通过工厂生成sqlSessionsqlSession = sqlSessionFactory.openSession();}@Test/*** 插入用户信息* @throws IOException*/public void inserUser() throws IOException {UserDao dao = new UserDaoImpl(sqlSession);User user =new User();user.setUserName("jiumozhi");user.setPassword("123456");user.setName("鸠摩智");user.setAge(30);user.setSex(1);user.setBirthday(new Date());dao.saveUser(user);System.out.println(user);}
}

dao层方法

@Overridepublic void saveUser(User user) {sqlSession.insert("UserDaoMapper.saveUser", user);sqlSession.commit();sqlSession.close();}

展示结果

这里写图片描述
这里写图片描述

这篇关于MyBatis 实现主键回写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990504

相关文章

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会