问题标签 [jdbi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3355 浏览

java - PostgreSQL 函数不存在

我正在使用 SQL 查询,它使用与此类似的自定义编写函数

这在 pgAdmin 工具中工作得很好,但是当我在我的 java 应用程序中使用这个查询时,它给了我一个错误:

我正在使用 JDBI 库与数据库进行交互。为什么从 java 应用程序运行时找不到函数?我该如何解决?

0 投票
1 回答
1987 浏览

dao - JDBI DAO 实例可以复用吗?

实例可以dao重复使用吗?还是我们需要为每次使用实例化它?

从代码看来,它负责维护数据库事务。但是,在 DropWizard 中,示例是:-

因此,在同一个资源中,这个 dao 实例将在所有路径中被重用。这意味着当对同一资源(可能在两条路径中)发出两个请求时,它们都将使用相同的 dao 实例。这不会引起问题吗?

0 投票
0 回答
1067 浏览

java - jdbi可以是春豆吗?

如何将JDBI抽象类扩展的 DAO 类注册为 Spring bean?我想一起使用 JDBI + Spring JdbcTemplate + Spring Transactions

0 投票
1 回答
911 浏览

java - 如何在 jdbi 中实现审计拦截器?

有没有办法在 JDBI 中实现 Hibernate 的 Audit Interceptor 概念? 审计拦截器示例

0 投票
1 回答
1059 浏览

jdbi - SQL Objects API - Get all columns?

I am using the SQL objects API in the following lines of code in my data access object to get the name field from a row in an SQL table where the ID matches the one provided.

That works all well and good, but what on earth do I do if I want to return all of the fields for that row in the table, not just the name, but all colums for that record?

I did try using :

But that isn't right, it only seemed to return the id field (possibly as it is the first column in the table, and my method returns a string?)

Anyhow, I am all out of ideas on this and would appreciate all the help I can get.


Additional Info as I get requests for information :

This is the method signature of my method in the controller that calls my dao.

As you can see, it returns a string, as does the findNameByID method in the dao...

What I want to do, is pass the id using my method signature, and get back all of my columns as one nice JSON object if possible?

0 投票
1 回答
976 浏览

sql - JDBI Fluent 查询问题

我正在将 JDBI 与 Dropwizard 一起使用,并且遇到了流畅查询的问题。我有一个如下所示的 api 端点:

我试图避免编写以下 3 个查询:

这也意味着我对 getAccount 方法的实现有 3 个 if 检查... 昵称和没有电子邮件、电子邮件和没有昵称、电子邮件和昵称,以确定运行 3 个查询中的哪一个。如果我要添加另一个查找参数(例如 accountId),这意味着我现在需要 6 个查询(每种可能性 1 个)和 6 个 if 语句来确定要运行哪个查询。

有没有一种简单的方法可以用 JDBI 解决这个问题?我已经研究了@Define 的可能性,但这会带来 SQL 注入的风险。电子邮件和昵称都是字符串。

理想情况下,我只需要一个查询:

如果昵称为空,它将忽略昵称要求并仅查询电子邮件。这样的事情可能吗?

编辑/更新:

我现在这样做是为了稍微清理一下我的代码:

我已经更新了我的 JDBI dao 以使用 @Define。通过这样做,我可以将我的 6 个查询(每个案例 1 个查询,因为有 3 个查询字段)和 6 个 if 语句减少到 1 个查询和 3 个 if 语句。

我宁愿不必使用定义,因为我想将我的查询逻辑保留在 DAO 中。如果这样的事情是可能的,那就太好了:

0 投票
1 回答
63 浏览

java - SQL 对象 API - 所有行?

我在取回表中的所有行时遇到了一些麻烦 - 下面您将看到如何返回一行(有效)并将其映射到用户对象的代码。

控制器代码

DAO 代码:

太好了 - 但现在我需要编写另一个查询,它将返回列表中的所有用户记录。

提前感谢您的帮助!

0 投票
1 回答
599 浏览

postgresql - (JDBI/Dropwizard) 从 PostgreSQL 检索自动递增的 id 时出现 PSQLException

我正在尝试建立一个 dropwizard 项目,但我被卡住了。当我尝试使用 @GetGeneratedKeys 获取自动生成的 id 字段时,我收到以下异常:

请求是一个简单的 JSON 请求

插入数据库是成功的,但似乎该语句返回名称的值而不是生成的 id。我该如何解决这个问题?

我使用postgresql,表项目包含一个主键字段“id”和nextval('project_id_seq'::regclass)。以下是我使用的 POJO、DAO 和资源类:

================

更新

我刚刚发现这与我的 id 列不是表中的第一列有关。列名是。出现问题是因为@GetGeneratedKeys使用的是 org.skife.jdbi.v2.sqlobject.FigureItOutResultSetMapper,它使用的是 org.skife.jdbi.v2.PrimitivesMapperFactory,它返回 org.skife.jdbi.v2.util.LongMapper.FIRST。此映射器通过方法 extractByIndex(...) 调用 java.sql.ResultSet.getLong(1)以检索生成的 id,在我的情况下这不是 id...

我将通过重新组织数据库中的列来解决这个问题,但如果可能的话,我希望有一个健壮的实现:在使用 @GetGeneratedKeys 注释时是否可以指定 id 列的列名?(org.skife.jdbi.v2.util.LongMapper 类也包含一个名为 extractByName(...) 的方法)

0 投票
1 回答
276 浏览

mysql - 在编写代码时在不知道哪些列的情况下更新 MYSQL 数据库中的行?

我正在使用 SQL 对象 API 处理数据库中的数据,但遇到了一个烦人的问题:

当用户使用我的前端时,他们可以输入值等并从下拉列表等中选择,然后单击应用以保存对数据库的所有更改,问题是我永远不知道表中将更改哪些列在每次写入。

更新表格的代码(根据互联网)如下:

但是由于我永远不知道哪些字段会被更新,所以我肯定不能包含列名吗?

非常感谢帮助,谢谢。

0 投票
3 回答
2638 浏览

java - 通过 JDBI dropwizard 使用自定义 where 条件

我正在尝试使用 dropwizard 探索 JDBI,我的自定义代码如下。

并尝试使用以下代码调用

并得到以下问题

我收到引号问题,因为这是作为字符串传递的。通过这种方式,我试图为所有查询实现通用的 where 子句代码。我的问题是 1. 如何解决这个问题。2. 这样编码是否合适,或者我们可以使用准备好的语句。如果是,那么如何。

非常感谢提前:)