Mybatis提供了几种获取自动生成的主键值的方式:
1. 使用
INSERT INTO user (username, password) VALUES (#{username}, #{password})
在上面的例子中,useGeneratedKeys属性设置为true表示开启自动生成主键值的功能,keyProperty属性指定了主键值将被设置到哪个属性中。
2. 使用
SELECT LAST_INSERT_ID()
INSERT INTO user (username, password) VALUES (#{username}, #{password})
在上面的例子中,order属性设置为AFTER表示在插入语句执行后获取主键值。
3. 使用
SELECT LAST_INSERT_ID()
INSERT INTO user (username, password) VALUES (#{username}, #{password})
在上面的例子中,statementType属性设置为PREPARED表示使用预编译语句来获取主键值。
4. 使用
SELECT LAST_INSERT_ID()
INSERT INTO user (username, password) VALUES (#{username}, #{password})
在上面的例子中,order属性设置为AFTER表示在插入语句执行后获取主键值,statementType属性设置为PREPARED表示使用预编译语句来获取主键值。
5.在
例如:
insert into names (name) values (#{name})
int rows = userMapper.insertUser(user);
//执行完毕后,id已经被设置到对象中
System.out.println(user.getId()); // 会输出自动生成的id
总结起来,使用
如果使用Mybatis-Plus的话,获取自动生成的主键值的方式如下:
1. 使用实体对象的getId()方法:在插入数据后,通过实体对象的getId()方法获取自动生成的主键值。例如:
User user = new User();
user.setUsername("test");
user.setPassword("123456");
userMapper.insert(user);
Long id = user.getId();
在上面的例子中,userMapper.insert(user)会将数据插入数据库,并自动生成主键值,然后通过user.getId()方法获取该主键值。
2. 使用实体对象的自增主键注解:在实体对象的主键字段上添加@TableId(type = IdType.AUTO)注解,可以指定主键为自增类型。例如:
public class User {
@TableId(type = IdType.AUTO)
private Long id;
// other fields and methods
}
在上面的例子中,@TableId(type = IdType.AUTO)注解指定了主键为自增类型。在插入数据后,通过实体对象的getId()方法获取自动生成的主键值。
3. 使用KeyGenerator类:可以通过KeyGenerator类来获取自动生成的主键值。例如:
User user = new User();
user.setUsername("test");
user.setPassword("123456");
userMapper.insert(user);
KeyGenerator keyGenerator = Jdbc3KeyGenerator.INSTANCE;
Object id = keyGenerator.execute(userMapper);
在上面的例子中,userMapper.insert(user)会将数据插入数据库,并自动生成主键值。然后通过KeyGenerator类的execute()方法获取该主键值。
总结起来,Mybatis-Plus提供了多种方式来获取自动生成的主键值,可以根据具体情况选择适合的方式来实现。