mybatis主键自增长,注解返回主键

实体类

 @TableId(value = "projectID",type = IdType.AUTO)
    @TableField("projectID")
    private Long projectID;

插入的时候就不能直接用BaseMapper接口的Integer insert(T var1);了,需要自己实现

@Options(useGeneratedKeys = true, keyProperty = "projectID", keyColumn = "projectID")
    @Insert("insert into "+tableName+"(projectName,creTm,createrID,createrName,finUpdaterID,finUpdateTm,mangerName,mangerID,projectContent,participantIDstr) VALUES(#{projectName},#{creTm},#{createrID},#{createrName},#{finUpdaterID},#{finUpdateTm},#{mangerName},#{mangerID},#{projectContent},#{participantIDstr})")
    int addCmpProject(CmpProject project);

需要用以上两个注解实现,如此

Integer insert = projectMapper.addCmpProject(project);

执行之后的project中就已经包含主键了

Mapper主键回填是指在进行数据库插入操作后,将数据库自动生成的主键回填到实体对象中。 在进行数据库插入操作时,我们常常需要用到数据库自动生成的主键值,例如数据库中的自增主键。但是在插入数据后,我们需要将这个自动生成的主键回填到实体对象中,以便后续的操作使用。 在MyBatis框架中,可以通过设置`useGeneratedKeys`属性来实现主键回填。在Mapper接口的方法上添加`@Options(useGeneratedKeys = true, keyProperty = "id")`注解,其中`keyProperty`指定了要回填主键属性名。在插入操作完成后,MyBatis自动将数据库生成的主键回填到实体对象的指定属性中。 例如,我们有一个User实体类,其中包含一个自增主键id和其他的属性。对应的Mapper接口如下所示: ```java public interface UserMapper { @Insert("INSERT INTO user(name) VALUES (#{name})") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUser(User user); } ``` 在上述例子中,我们使用`@Options`注解设置了`useGeneratedKeys`为true,表示使用数据库自动生成的主键值;设置了`keyProperty`为"id",表示将主键回填到User对象的id属性中。 使用Mapper插入操作时,可以直接传入User对象,插入完成后User对象的id属性回填为数据库生成的主键值。例如: ```java User user = new User(); user.setName("John"); userMapper.insertUser(user); System.out.println(user.getId()); // 输出数据库生成的主键值 ``` 这样就实现了Mapper主键回填的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值