为了解释,我users
在 schema 中创建了一个表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
并由keyColumn
上述内容keyProperty
填充<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
属性User
。
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setName("User1");
mapper.insert(user);
sqlSession.commit();
assertNotNull(user.getId());
}
这是一个演示项目,您可以验证自己。