package dao.impl; // 引入相关类和接口 import dao.PhotoDao; // 数据访问对象(DAO)接口 import domain.Photo; // 表示 Photo 表数据结构的实体类 import org.springframework.dao.DataAccessException; // 数据访问异常类 import org.springframework.jdbc.core.BeanPropertyRowMapper; // 用于将结果集映射为实体类 import org.springframework.jdbc.core.JdbcTemplate; // Spring 的 JDBC 模板类 import utils.JDBCUtils; // 自定义工具类,用于获取数据源 /** * PhotoDaoImpl 实现了 PhotoDao 接口,负责与数据库交互以操作 Photo 数据表。 */ public class PhotoDaoImpl implements PhotoDao { // 使用 JdbcTemplate 进行数据库操作,通过 JDBCUtils 获取数据源 private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /** * 添加一条照片记录 * @param photo 包含照片信息的 Photo 对象 */ @Override public void addPhoto(Photo photo) { try { // SQL 语句:向 photo 表插入照片记录 String sql = "insert into photo(photo_id, photo_name) values(?, ?)"; // 使用 JdbcTemplate 执行插入操作 template.update(sql, photo.getPhotoId(), photo.getPhotoName()); } catch (DataAccessException e) { e.printStackTrace(); // 打印异常堆栈信息 } } /** * 根据照片 ID 查找照片 * @param id 照片 ID * @return 查找到的 Photo 对象;未找到时返回 null */ @Override public Photo findPhotoByPhotoId(String id) { try { // SQL 语句:根据照片 ID 查找对应的照片记录 String sql = "select * from photo where photo_id = ?"; // 使用 JdbcTemplate 执行查询,并将结果映射为 Photo 对象 Photo photo = template.queryForObject(sql, new BeanPropertyRowMapper(Photo.class), id); return photo; // 返回查询结果 } catch (DataAccessException e) { e.printStackTrace(); // 打印异常堆栈信息 return null; // 查询失败时返回 null } } /** * 更新照片信息 * @param photo 包含更新信息的 Photo 对象 */ @Override public void updatePhoto(Photo photo) { try { // SQL 语句:更新 photo 表中的照片名称 String sql = "update photo set photo_name = ? where photo_id = ?"; // 使用 JdbcTemplate 执行更新操作 template.update(sql, photo.getPhotoName(), photo.getPhotoId()); } catch (Exception e) { e.printStackTrace(); // 打印异常堆栈信息 } } }