在Java中存储SQL查询的最佳方法是什么

时间:2019-06-06 11:53:15

标签: java sql jdbc dao

我正在使用Java Servlet编写一个简单的服务器。为了从数据库中获取数据,我编写了特殊的Dao层类,并且我想了解应该将SQL查询存储在哪里?

@Override
    public boolean checkIsUserExists(String login) {
        try {
            PreparedStatement preparedStatement =
                    connection.prepareStatement("select * from clients where login=?");
            preparedStatement.setString(1, login);
            ResultSet resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                return true;
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }


        return false;
    }

我是否需要创建一个特殊的类SQLQueries并将查询存储为最终字符串,或者有其他更有效的方法?

2 个答案:

答案 0 :(得分:-1)

这取决于您要投资多少时间。

如果只是一些查询,而又不想增加太多开销,请使用最终Strings创建一个Java类,并在必要时引用它们。 所以这行

connection.prepareStatement(“从登录名为?的客户端中选择*”);

将变为: connection.prepareStatement(SQLQueries.SELECT_CLIENTS);

当您使用Java Servlet(已严重过时)时,我认为就足够了:)

如果数据量更大,您还可以使用liquibase与MySQLExpressServer2014一起更改结构(两者都是免费的),或者直接将脚本作为.sql类运行。

如果您真的想遇到麻烦或知道自己在做什么,那么可以使用Spring / Spring Boot。

答案 1 :(得分:-1)

由于这是一个常量,建议使用类似下面的常量类:

//cannot be extended
public final class Constants {

   //private constructor
   private Constants(){}
   public static String SQL_FIND_CLIENTS_FOR_LOGIN="select * from clients where login=?;
}

现在在您的主类中进行静态导入并使用它:

import static Constants.SQL_FIND_CLIENTS_FOR_LOGIN;