0

我正在编写一个与数据库交互的应用程序。我想用它PreparedStatement来执行查询,但是我必须做的查询数量很多,并且将来可能会增加。
我只知道为特定查询编写一个函数来执行它,并且想不出更好的方法来执行它。

例如查询可以是:

SELECT * 
FROM   TABLE_NAME 
WHERE  TABLE_NAME.ATTRIBUTE_NAME = ? 

SELECT * 
FROM   TABLE_NAME 
WHERE  TABLE_NAME.ATTRIBUTE_NAME = ?
       AND TABLE_NAME.ATTRIBUTE_NAME1 = ?

而且我将不得不编写一个独立的函数来执行两者(如何为一个查询执行此操作的示例),但我知道这不是执行此操作的模块化方式。

有更好的方法吗?

4

1 回答 1

0

IMO 一个非常好的解决方案可以使用JOOQ库。
只是

  • 创建您的数据库架构
  • 连接到数据库
  • 使用 fluent API 根据生成的数据库模式元模型创建查询

(您也可以像这里描述的那样使用简单的 SQL 执行器)
完成。这是你的图书馆。

之后,要从您的程序上下文中分离出来,创建一个类似的接口

interface MyOperations {
  public int getUserById(int userID);
}

class MyOperationsImpl implements MyOperations {

  public MyOperationsImpl(Connection connection) {...}

  int getUserById(int userID) {
    DSLContext create = DSL.using(this.connection, SQLDialect.MYSQL);
    create.select().from(USERS).where(USERS.ID.equal(userID));
  }
}

这可以以某种方式回答您的问题或帮助吗?

于 2013-08-24T20:05:25.603 回答