Đầu tiên, tôi khuyên bạn nên tìm hiểu cách thực hiện mà không cần application.properties
tập tin. Chúng ta đang sống ở thế kỷ 21, nơi Spring-boot
cho phép chúng tôi khai báo jdbc dataSource
dưới dạng @Bean
với thông tin đăng nhập cơ sở dữ liệu trong MySpringBootApplication
lớp. Xem cách thực hiện tại đây
Thứ hai, tôi khuyên không nên sử dụng jdbcTemplate
trừ khi bạn không có thời gian. Đánh dấu lời nói của tôi, nếu xảy ra gỡ lỗi - đó sẽ là cơn ác mộng. Vì vậy, hãy cố gắng sử dụng Jdbc với việc bổ sung cấu hình mùa xuân.
Ví dụ mẫu về cách thực hiện:
Giao diện StudentDAO
public interface StundentDAO {
void addStudent(String name, String surname);
List<Student> findStudents();
}
Triển khai JdbcStudentDAO
@Repository
public class JdbcStudentDAO implements StudentDAO {
//[IMPORTANT] import javax.sql.datasource package (?)
private Datasource datasource;
@Autowire
public JdbcStudentDAO(Datasource datasource) {
this.datasource = datasource;
}
@Override
public void addStudent(String name, String surname) {
String query = "INSERT INTO Students VALUES (?,?)";
try(Connection connection = datasource.getConnection()) {
try(PreparedStatement statement = connection.preparedStatement(query)) {
statement.setString(1, name);
statement.setString(2, surname);
statement.executeUpdate();
}
} catch(SQLException e) {
e.printStacktrace();
}
}
@Override
public List<Student> findStudents() {
String query = "SELECT * FROM Students";
Student student = null; //will be used soon as DTO
List<Student> listOfStudents = null;
try(Connection connection = datasource.getConnection()) {
try(PreparedStatement statement = connection.preparedStatement(query)) {
try(ResultSet rs = statement.executeQuery()) {
listOfStudents = new ArrayList<>();
while(rs.next()) {
student = new Student(
rs.getString("name");
rs.getString("surname");
);
}
listOfStudents.add(student);
}
}
} catch(SQLException e) {
e.printStacktrace();
}
return listOfStudents;
}
}
Xin lưu ý rằng dataSource
chỉ kết nối Cơ sở dữ liệu. (xem liên kết)
Chúc các bạn thành công!