使用iBATIS生成DAO问题

发布于 2024-09-13 10:13:31 字数 341 浏览 2 评论 0原文

我在 MSSQL 中创建了一个具有以下结构的表 -

**Table Name - TestTable**
id (int) (Primary key)
name (varchar) 
owner (varchar)

我为列“id”给出了身份规范,每个新行自动递增 1。当我为 TestTable 创建 iBatis 工件时,会在 DAO 中生成带有以下签名的插入函数 -

 void insert(TestTable record); 

我希望插入函数返回该行新生成的“id”,而不是 void。

如何实现这一目标?

I have created a table in MSSQL having following structure -

**Table Name - TestTable**
id (int) (Primary key)
name (varchar) 
owner (varchar)

I have given Identity specification for column 'id' with auto increment with 1 for each new row. When I created iBatis artifacts for TestTable, the insert function is getting generated, in the DAO, with following signature -

 void insert(TestTable record); 

I want the insert function to return the newly generated 'id' for that row, instead of void.

How to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飘过的浮云 2024-09-20 10:13:31

在 ibatis SqlMap 文件中,添加以下内容:

<insert id="myInsertStatement">
    INSERT INTO TestTable (name, owner)
    VALUES (#name#, #owner#)
    <selectKey keyProperty="id" resultClass="int">
         SELECT SCOPE_IDENTITY()
    </selectKey>
</insert>

或者,您可以将 Select Scope_identity 替换为另一个旨在返回最后插入的标识列的 SQL 查询。 Scope_identity 特定于 MS SQL(如问题中所要求的)。

In your ibatis SqlMap file, add the following:

<insert id="myInsertStatement">
    INSERT INTO TestTable (name, owner)
    VALUES (#name#, #owner#)
    <selectKey keyProperty="id" resultClass="int">
         SELECT SCOPE_IDENTITY()
    </selectKey>
</insert>

Or you could replace Select Scope_identity with another SQL query designed to return the last identity column inserted. The Scope_identity is specific to MS SQL (as requested in the question).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文