MyBatis中select last_insert_id()返回插入ID时,有哪些潜在问题或风险?
- 内容介绍
- 文章标签
- 相关推荐
本文共计904个文字,预计阅读时间需要4分钟。
1. 请勿误解select last_insert_id() 1. 首先来看一看我们的User对象与xml及接口Mapper中的方法:(1) User对象:public class User { private long id; private String name; private String password; private String phone; (2) Mapper接口:public interface UserMapper { // ... }
1、请勿误解select last_insert_id()1、首先来看一看我们的User对象与xml与接口Mapper中的方法
(1):User对象
public class User {
private long id;
private String name;
private String password;
private String phone;
private boolean is_lock;
//省略get set方法
}
(2):xml
1、有时我们会这么写 ▉ 接口Mapper中 public long create(@Param("user")User user); ▉ xml中 insert into user(id,name,password,phone,is_lock) values (#{user.id},#{user.name},#{user.password},#{user.phone},#{user.is_lock}) 这么写的话last_insert_id()是不会成功的,似乎我们添加了@Param("user")后,mybatis就无法找到user插入返回id了, 但是数据库中插入的行数是有更新的; 2、我们应该这么写 ▉ 接口Mapper中 public long create(User user);//去掉@Param ▉ xml中 insert into user(id,name,password,phone,is_lock) values (#{id},#{name},#{password},#{phone},#{is_lock}) 3、成功的例子
(1):User对象
public class User {
private long id;
private String name;
private String password;
private String phone;
private boolean is_lock;
//省略get set方法
}
(2):接口Mapper中
public long create(User user);
(3):xml中
当有特殊情况,必须使用@Param(),而且要返回插入id应该怎么做呢,我们还有一种方法能返回插入id
(1)接口Mapper中:
public void create(@Param("user")User user);
(2)xml中
本文共计904个文字,预计阅读时间需要4分钟。
1. 请勿误解select last_insert_id() 1. 首先来看一看我们的User对象与xml及接口Mapper中的方法:(1) User对象:public class User { private long id; private String name; private String password; private String phone; (2) Mapper接口:public interface UserMapper { // ... }
1、请勿误解select last_insert_id()1、首先来看一看我们的User对象与xml与接口Mapper中的方法
(1):User对象
public class User {
private long id;
private String name;
private String password;
private String phone;
private boolean is_lock;
//省略get set方法
}
(2):xml
1、有时我们会这么写 ▉ 接口Mapper中 public long create(@Param("user")User user); ▉ xml中 insert into user(id,name,password,phone,is_lock) values (#{user.id},#{user.name},#{user.password},#{user.phone},#{user.is_lock}) 这么写的话last_insert_id()是不会成功的,似乎我们添加了@Param("user")后,mybatis就无法找到user插入返回id了, 但是数据库中插入的行数是有更新的; 2、我们应该这么写 ▉ 接口Mapper中 public long create(User user);//去掉@Param ▉ xml中 insert into user(id,name,password,phone,is_lock) values (#{id},#{name},#{password},#{phone},#{is_lock}) 3、成功的例子
(1):User对象
public class User {
private long id;
private String name;
private String password;
private String phone;
private boolean is_lock;
//省略get set方法
}
(2):接口Mapper中
public long create(User user);
(3):xml中
当有特殊情况,必须使用@Param(),而且要返回插入id应该怎么做呢,我们还有一种方法能返回插入id
(1)接口Mapper中:
public void create(@Param("user")User user);
(2)xml中

