tk-mybatis + PostgreSQL返回主键自增

tk-mybatis框架对PostgreSQL好像并不怎么友好,没有直接给出返回自增主键的功能,不过我们可以自己稍做努力加以实现。

在tk-mybatis的tk.mybatis.mapper.common.base.insert.InsertSelectiveMapper接口中提供了通用的insert操作,该接口并没有提供返回自增主键的功能,如下:

/**
 * 通用Mapper接口,插入
 *
 * @param <T> 不能为空
 * @author liuzh
 */
@RegisterMapper
public interface InsertSelectiveMapper<T> {

    /**
     * 保存一个实体,null的属性不会保存,会使用数据库默认值
     *
     * @param record
     * @return
     */
    @InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
    int insertSelective(T record);

}

如果想在insert操作中返回自增主键,可以让子Mapper接口重写该接口的insertSelective方法。如下:

@Override
@InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int insertSelective(HgdRole record);

在进行重写时,@InsertProvider注解是必须的,直接从多接口tk.mybatis.mapper.common.base.insert.InsertSelectiveMapper中复制过来即可@Options注解是配置返回主键自增的。
当重写该方法后,tk-mybatis在创建MappedStatement对象时,会使用子方法的insertSelective方法。

当然,如果我们使用的是insert方法,而不是insertSelective方法,道理也是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值