Mybatis Generator Postgres返回创建的ID支持

时间:2019-12-02 19:17:30

标签: postgresql mybatis mybatis-generator

我正在为刚刚开始从事的项目使用postgres,我意识到Mybatis支持检索许多数据库的自动生成的ID密钥,但不幸的是postgres并不是其中之一,我做了一些修改生成的SQL映射器和:  -更改选择而不是在生成的xml中插入  -在每个句子的最后一行添加“返回ID”

所以它看起来像:

<select id="insert" keyColumn="id" keyProperty="id" parameterType="com.myproject.Order" ...
    insert into ...
    ...
    RETURNING id
</select>

有了更改,它就像一个符咒一样工作,但是问题是,一旦再次执行生成器,就应该手动再次应用更改,我正在寻找一个插件来帮助我自动执行更改,但是我没有找到似乎有什么帮助,您在类似的事情发生之前有做过什么吗?会有什么建议?

1 个答案:

答案 0 :(得分:1)

为便于说明,我在模式users中创建了一个表mbtest

create table mbtest.users (
  id serial primary key,
  name varchar(20)
);

以下是生成器配置中的<table />元素。 (在评论中,我写了sqlStatementType,但应该是sqlStatement

<table tableName="users" domainObjectName="User"
    schema="mbtest">
  <generatedKey column="id" sqlStatement="JDBC" />
</table>

生成的'UserMapper.xml'包含以下插入语句。 请注意,上面的useGeneratedKeys填充了keyColumnkeyProperty<generatedKey />

<insert id="insert" keyColumn="id"
    keyProperty="id" parameterType="test.model.User"
    useGeneratedKeys="true">
  <!--
    WARNING - @mbg.generated
    This element is automatically generated by MyBatis Generator, do not modify.
    This element was generated on Sun Dec 08 12:36:30 JST 2019.
  -->
  insert into mbtest.users (name)
  values (#{name,jdbcType=VARCHAR})
</insert>

(如警告所述,您不应修改生成的语句)

insert语句会将生成的密钥设置为id的{​​{1}}属性。

User

这里是demo project,以便您可以验证自己。