Mybatis如何获取自动生成的(主)键值?

1、Mybatis

Mybatis提供了几种获取自动生成的主键值的方式:

1. 使用元素:可以在插入语句执行后,通过元素来获取自动生成的主键值。例如:


    INSERT INTO user (username, password) VALUES (#{username}, #{password})

在上面的例子中,useGeneratedKeys属性设置为true表示开启自动生成主键值的功能,keyProperty属性指定了主键值将被设置到哪个属性中。

2. 使用元素的order属性:可以通过order属性来指定获取主键值的顺序。例如:


    
        SELECT LAST_INSERT_ID()
    
    INSERT INTO user (username, password) VALUES (#{username}, #{password})

在上面的例子中,order属性设置为AFTER表示在插入语句执行后获取主键值。

3. 使用元素的statementType属性:可以通过statementType属性来指定获取主键值的方式。例如:


    
        SELECT LAST_INSERT_ID()
    
    INSERT INTO user (username, password) VALUES (#{username}, #{password})

在上面的例子中,statementType属性设置为PREPARED表示使用预编译语句来获取主键值。

4. 使用元素的order属性和statementType属性的组合:可以通过order属性和statementType属性的组合来灵活地获取主键值。例如:


    
        SELECT LAST_INSERT_ID()
    
    INSERT INTO user (username, password) VALUES (#{username}, #{password})

在上面的例子中,order属性设置为AFTER表示在插入语句执行后获取主键值,statementType属性设置为PREPARED表示使用预编译语句来获取主键值。

5.在标签中使用 useGeneratedKeys   和  keyProperty 两个属性来获取自动生成的主键值。

例如:

  

    insert into names (name) values (#{name})  

 

业务层使用

int rows = userMapper.insertUser(user);
//执行完毕后,id已经被设置到对象中
System.out.println(user.getId()); // 会输出自动生成的id

总结起来,使用元素是获取自动生成的主键值的常用方式,可以根据具体情况选择不同的属性来实现不同的获取方式。

2、Mybatis-plus

如果使用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提供了多种方式来获取自动生成的主键值,可以根据具体情况选择适合的方式来实现。

你可能感兴趣的:(java,数据库,大数据,mybatis)