mapper mysql 主键_mybatis插入数据时返回主键(mysql数据库)

本文介绍了在MyBatis中插入数据时如何利用MySQL的主键生成机制获取主键值。方法一是通过设置`useGeneratedKeys`为`true`和`keyProperty`属性,主键值会自动填充到对象的id属性。方法二是使用`selectKey`标签,配合`LAST_INSERT_ID()`函数,可以选择在插入操作前后获取主键。
摘要由CSDN通过智能技术生成

第一种方式使用useGeneratedKeys属性

User类

public class User {

private int id;

private String username;

private Date birthday;

private String sex;

private String address;

...

mapper文件

insert into user(username, birthday, sex, address)

values (#{username}, #{birthday}, #{sex}, #{address})

在insert标签中需要将useGeneratedKeys属性设置为true

keyProperty属性值是主键对应的pojo中的属性

返回的主键会放置在入参对象中的id属性上

mapper接口

public interface UserMapper {

void insertUser(User user) throws Exception;

}

测试代码

@Test

public void testInserUser () throws Exception {

SqlSession sqlSession = sqlSessionFactory.openSession();

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

User user = new User();

user.setUsername("张三");

user.setBirthday(new Date());

user.setSex("男");

user.setAddress("武汉");

userMapper.insertUser(user);

sqlSession.commit();

System.out.println(user.getId());

sqlSession.close();

}

上面的测试代码中入参是一个user对象,返回的主键是在该对象的id属性中,所以使用user.getId()可以获取到该主键。

第二种方式selectKey标签

mapper配置文件

select LAST_INSERT_ID()

insert into user(username, birthday, sex, address)

values (#{username}, #{birthday}, #{sex}, #{address})

keyProperty属性值也是返回的主键值是与对象中的哪一个参数对应

resultType是返回的主键类型

select LAST_INSERT_ID()是mysql中的一个函数,用于自动返回下一个主键

order属性,可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值