package dao.impl; import dao.AdminDao; // 引入 AdminDao 接口,定义管理员相关的数据访问方法 import domain.Admin; // 引入 Admin 实体类,表示管理员数据 import org.springframework.dao.DataAccessException; // 引入数据库访问异常类 import org.springframework.jdbc.core.BeanPropertyRowMapper; // 用于将查询结果映射为 Java 对象 import org.springframework.jdbc.core.JdbcTemplate; // JDBC 操作模板,用于简化数据库操作 import utils.JDBCUtils; // 自定义工具类,用于获取数据库数据源 /** * AdminDaoImpl 实现类,负责对管理员信息进行数据库操作。 */ public class AdminDaoImpl implements AdminDao { // 使用 JdbcTemplate 对数据库进行操作,JDBCUtils 提供数据源 private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /** * 根据管理员 ID 和密码查询管理员信息。 * * @param id 管理员 ID * @param password 管理员密码 * @return 如果匹配成功,返回管理员对象;否则返回 null */ @Override public Admin findAdminidAndPassword(String id, String password) { try { // SQL 查询语句:根据管理员 ID 和密码查询管理员 String sql = "select * from admin where a_id = ? and a_password = ?"; // 执行查询,并将结果映射为 Admin 对象 Admin admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), id, password); return admin; // 返回找到的管理员 } catch (DataAccessException e) { // 捕获数据库访问异常并打印堆栈信息 e.printStackTrace(); return null; // 查询失败时返回 null } } /** * 更新管理员密码。 * * @param adminid 管理员 ID * @param newpassword 新密码 */ @Override public void updatePassword(String adminid, String newpassword) { try { // SQL 更新语句:根据管理员 ID 更新密码 String sql = "update admin set a_password=? where a_id=?"; // 执行更新操作 template.update(sql, newpassword, adminid); } catch (Exception e) { // 捕获异常并打印堆栈信息 e.printStackTrace(); } } /** * 根据管理员 ID 查询管理员信息。 * * @param id 管理员 ID * @return 如果存在,返回管理员对象;否则返回 null */ @Override public Admin findAdminById(String id) { try { // SQL 查询语句:根据管理员 ID 查询管理员 String sql = "select * from admin where a_id = ?"; // 执行查询,并将结果映射为 Admin 对象 Admin admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), id); return admin; // 返回找到的管理员 } catch (DataAccessException e) { // 捕获数据库访问异常并打印堆栈信息 e.printStackTrace(); return null; // 查询失败时返回 null } } }