用Java设计数据访问类
因此,我正在编写一个RESTAPI,并为每个资源定义了一个服务类
因此,我有一个人力资源,这就是我与数据库交互的方式
public class TeacherService {
public static List<Person> getAll() throws SQLException{
//define the query string and objects
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
connection = (Connection) DriverManager.getConnection(ConnectDb.CONN_STRING, ConnectDb.USERNAME, ConnectDb.PASSWORD);
statement = (PreparedStatement) connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
resultSet = statement.executeQuery(query);
//process results
}catch (SQLException e) {
System.err.println(e);
}finally{
//close all shit
}
return list;
}
public static Person getById(int id) throws SQLException{
//repeat
}
public static void addPerson(Person person) throws SQLException {
//repeat
}
public static void upateTeacher(Person person) throws SQLException {
//repeat
}
public static void deleteTeacher(int id) throws SQLException {
//repeat
}
}
因此,除了在每种情况下都不同的查询和resultSet处理逻辑之外,每件事都几乎是一样的。 这不仅在许多层面上违反了DRY标准,而且维护起来也显得极为笨拙。有没有更好的办法
# 1 楼答案
这里有一个例子,说明你可能会怎么做。这个例子并不完美,但应该让你走上正确的道路
基本上,在打开公共共享连接后,您可以注册所有语句。完成所有工作,然后调用shutdown()方法将其全部关闭
你会像这样使用它: