Mapper 中insert 类型String 和Integer
时间: 2024-11-03 13:15:06 浏览: 9
关于使用Mybatisplus自带的selectById和insert方法时的一些问题
在Java的MyBatis框架中,Mapper接口通常定义了与数据库交互的方法,包括`insert()`和`insertList()`等。当涉及到插入操作时,`insert()`方法通常用于插入单条记录,而`insertList()`则适用于批量插入。
对于`UserMapper`接口,如果主键`id`设置为`@Id`并指定了`useGeneratedKeys = true`,这意味着当调用`insert()`或`insertList()`方法插入数据时,MyBatis会自动处理主键的自增。所以,对于单条插入,例如:
```java
public interface UserMapper {
// 使用String类型的SQL语句插入单条用户信息
@Insert("INSERT INTO user (username, desc) VALUES (#{username}, #{desc})")
void insertUser(@Param("username") String username, @Param("desc") String desc);
// 或者使用Integer类型,但这里主键不会手动赋值,因为主键会被自动递增
@Insert("INSERT INTO user (username, desc) VALUES (#{username}, #{desc})")
@Options(useGeneratedKeys = true)
int insertUserAutoIncrement(User user); // 参数为User对象,无需指定id
}
```
对于批量插入`insertList()`,MyBatis会利用动态SQL来执行,内部已经处理了主键自增:
```java
// 使用insertList()插入多条用户数据
@Insert("INSERT INTO user (username, desc) VALUES ")
List<Integer> insertUsers(List<User> users); // 返回的是被插入的id列表
```
在这里,由于`useGeneratedKeys = true`,返回的`List<Integer>`包含了每个新插入用户的ID,这些ID已经在数据库中自动生成。
阅读全文