很久没写博客了,因为又被拉去带搞spring了!
本文内容基于spring boot 2.3.7.RELEASE。
R2DBC接入在1月份的文章有讲,但是注意版本差异,后面的版本R2DBC从整个包都发生了迁移。选择2.3.7是因为这是能比较好适配nacos的最高版本的spring boot。在spring cloud alibaba下,对新版本的兼容是非常滞后的。题外话!
R2DBC ReactiveCrudRepository 并不支持多主键(至少在2.3.7我没有找到支持的方式)。第一个,你就找不到合适的class去放在ReactiveCrudRepository的第二个泛型。第二,即使你使用r2dbcTemplate,也会直接报错。
剩下的办法就只能走万能的sql语句了,具体,官网有说明,这里简单示例一下:
//数据库为postgresql
r2dbcTemplate.databaseClient.execute(
"INSERT INTO data (id,data,type) VALUES (:id,:data,:type)"
)
.bind("id",unifiedRequest.unified.unifiedId)
.bind("data",unifiedRequest.unified.dataId)
.bind("type",unifiedRequest.unified.unifiedType)
.asType<Long>()
.fetch()
.first()
fetch是一个提交动作,前面的语句可以看成一个完成的sql语句,bind是将参数绑定上去,asType是返回值可以返回响应式流。