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