如何使用标识为序列在 PostgreSQL 13 中获取 MyBatis 插入主键值
how to get MyBatis insert primary key value in PostgreSQL 13 using identify as sequece
我现在使用的是PostgreSQL 13,使用MyBatis插入记录后,需要获取插入记录的主键。以旧的方式,我使用的是串口,配置是这样的:
<table tableName="article"
enableCountByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="ID" sqlStatement="SELECT currval('article_id_seq')" identity="true" />
</table>
最近我将 PostgreSQL 主键切换为标识(我阅读了 PostgreSQL 手册并告诉我这是生成串行主键的更好方法),如下所示:
ALTER TABLE rss_sub_source
ALTER id SET NOT NULL, -- optional
ALTER id ADD GENERATED ALWAYS AS IDENTITY
(START WITH 1233);
而table不包含序列,请问现在如何获取主键?
最好的方法是使用对生成密钥的原生 JDBC 支持。 JDBC 驱动程序将检索新值。你可以在 MyBatis Generator 中这样设置:
<table tableName="article">
<generatedKey column="ID" sqlStatement="JDBC" />
</table>
我现在使用的是PostgreSQL 13,使用MyBatis插入记录后,需要获取插入记录的主键。以旧的方式,我使用的是串口,配置是这样的:
<table tableName="article"
enableCountByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="ID" sqlStatement="SELECT currval('article_id_seq')" identity="true" />
</table>
最近我将 PostgreSQL 主键切换为标识(我阅读了 PostgreSQL 手册并告诉我这是生成串行主键的更好方法),如下所示:
ALTER TABLE rss_sub_source
ALTER id SET NOT NULL, -- optional
ALTER id ADD GENERATED ALWAYS AS IDENTITY
(START WITH 1233);
而table不包含序列,请问现在如何获取主键?
最好的方法是使用对生成密钥的原生 JDBC 支持。 JDBC 驱动程序将检索新值。你可以在 MyBatis Generator 中这样设置:
<table tableName="article">
<generatedKey column="ID" sqlStatement="JDBC" />
</table>