向数据库中插入一条新的数据,并返回新增数据的ID

本文介绍了Mybatis配置文件中useGeneratedKeys参数的使用,当设置为true时,插入操作能获取自动生成的主键ID。这种方法适用于表有自增列作为主键的情况,插入数据后可在Service层直接获取并返回主键ID。

解决方案:

在编写Mapper时,加入以下配置
在这里插入图片描述
Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回插入返回的主键id是映射回原实体类中的!

所以在Service层取出id并返回
在这里插入图片描述

在 MyBatis 的`mapper.xml`中编写向数据库新增一条数据的代码,通常需要结合对应的`Mapper`接口方法。以下是一个完整的示例: #### 1. 定义实体类 假设存在一个`User`实体类,代码如下: ```java public class User { private Integer id; private String username; private String password; // 构造函数、Getter 和 Setter 方法 public User() {} public User(String username, String password) { this.username = username; this.password = password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` #### 2. 定义`Mapper`接口 创建一个`UserMapper`接口,其中包含一个插入用户的方法: ```java public interface UserMapper { int insertUser(User user); } ``` #### 3. 编写`mapper.xml`文件 在`mapper.xml`文件中实现插入用户的 SQL 语句: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <insert id="insertUser" parameterType="com.example.entity.User"> INSERT INTO user (username, password) VALUES (#{username}, #{password}) </insert> </mapper> ``` 在上述`mapper.xml`文件中,`namespace`指定了对应的`Mapper`接口的全限定名,`insert`标签示这是一个插入操作,`id`对应`Mapper`接口中的方法名,`parameterType`指定了传入参数的类型。`#{username}`和`#{password}`是 MyBatis 的占位符,用于获取传入的`User`对象的属性值。 #### 4. 使用示例 在 Java 代码中调用`UserMapper`的`insertUser`方法: ```java import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; public class Main { public static void main(String[] args) throws Exception { // 加载 MyBatis 配置文件 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 获取 SqlSession try (SqlSession session = sqlSessionFactory.openSession()) { UserMapper userMapper = session.getMapper(UserMapper.class); User user = new User("testUser", "testPassword"); int rows = userMapper.insertUser(user); session.commit(); System.out.println("插入的行数: " + rows); } } } ``` ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值