返回介绍

5.4 插入、更新和删除操作

发布于 2025-04-22 19:57:18 字数 1956 浏览 0 评论 0 收藏

除了刚刚讨论的查询特性,我们最后还要为 CustomerRepository 的实现类添加插入、更新和删除功能。借助于 Querydsl,数据是通过操作特定的 子句 (clause)来进行管理的,如 SQLInsertClause、SQLUpdateClause 和 SQLDeleteClause。在这一部分我们将会介绍借助 QueryDslJdbcTemplate 时如何使用它们。

5.4.1 使用 SQLInsertClause 进行插入操作

想往数据库中插入数据的时候,可以使用 Querydsl 提供的 SQLInsertClause 类。根据表是自动生成主键还是明确提供主键,会有两个不同的 execute(...) 方法。对于自动生成主键的情况,要使用 executeWithKey(...) 方法。这个方法会返回生成的主键,你就可以将其设置到领域对象上。当由你来提供主键的时候,要使用 execute 方法,它会返回受影响的行数。QueryDslJdbcTemplate 有两个对应的方法:insertWithKey(...) 和 insert(...)。

我们所使用的场景是自动生成主键,因此对于数据的插入要使用 insertWithKey(...),如示例 5-14 所示。insertWithKey(...) 方法的参数是查询类型的引用以及 SqlInsertWithKeyCallback 类型的回调,这个回调以生成主键的类型进行参数化。SqlInsertWithKeyCallback 回调接口只有一个名为 doInSqlInsertWithKeyClause(...) 的方法。这个方法以 SQLInsertClause 作为其参数。我们需要使用 SQLInsertClause 来设置值并调用 executeWithKey(...)。调用所返回的主键就是 doInSqlInsertWith KeyClause 的返回值。

示例 5-14 插入对象

c0527

5.4.2 使用 SQLUpdateClause 进行更新操作

执行更新操作与插入操作很类似,不过此时不用担心生成主键。QueryDslJdbcTemplate 中的方法称为 update,它接收的参数是查询类型的引用以及 SqlUpdateCallback 类型的回调。SqlUpdateCallback 只有一个名为 doInSqlUpdateClause(...) 的方法,其唯一的参数为 SQLUpdateClause。在设置完更新的值并指明 where 子句后,就可以调用 SQLUpdateClause 的 update 方法,它会返回更新的行数,这个更新的行数也是我们需要从回调中返回的值,如示例 5-15 所示。

示例 5-15 更新对象

c0528-1

c0528-2

5.4.3 使用 SQLDeleteClause 进行删除行操作

删除比更新更为简单,使用 QueryDslJdbcTemplate 的 delete 方法即可,它接收的参数是查询类型的引用以及 SqlDeleteCallback 类型的回调。SqlDeleteCallback 只有一个名为 doInSqlDeleteClause 的方法,其唯一的参数为 SQLDeleteClause。在这里没有必要设置任何的值 - 只需提供 where 子句并执行即可。具体如示例 5-16 所示。

示例 5-16 删除对象

c0529

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。