繁体   English   中英

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

[英]What is the best way to store sql queries in java

我正在使用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 ,将查询存储为最终字符串,或者有其他更有效的方法?

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

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

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

会变成:connection.prepareStatement(SQLQueries.SELECT_CLIENTS);

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

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

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

由于这是一个常量,因此建议使用这样的Constants类:

//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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM