/** * * @param sql 查询语句 * @param params 占位符对应的值 * @param handler 结果集一行的处理对象 * @return 处理后的对象的集合 * @throws SQLException */ //封装一个通用的多行查询方法 public static <T> List<T> query(String sql,Object [] params,ResultSetHandler<T> handler) throws SQLException{ //注册驱动,与数据库建立链接 Connection conn = ConnectionFactory.getConnection(); //创建可执行的sql语句 PreparedStatement pstmt = conn.prepareStatement(sql); //执行sql语句 先设置占位符 if(params!=null&¶ms.length>0){ //遍历传进来的占位符数字组 for (int i = 0; i < params.length; i++) { pstmt.setObject(i + 1, params[i]); } } ResultSet rs = pstmt.executeQuery(); //处理结果集 ArrayList<T> list = new ArrayList<>(); if(handler!=null){ while(rs.next()){ //每次处理一行 T obj = handler.handleRow(rs); //将处理的结果添加到List集合中 list.add(obj); } } ConnectionFactory.close(rs,pstmt, conn); return list; }
写一个查询数据库中所有用户信息,调用封装的查询方法
public class UserDaoImpl implements IUserDao{ //登录 public User queryUser(String username, String password) throws SQLException { //调用封装的方法查询单个用户 String sql = "SELECT id,username,password,sex,addr,tel,id_Number FROM t_user WHERE username=? AND password=?"; //object [] {参数1,参数2}需要和sql中设置的占位符的值一一对应 return JDBCTemplate.queryOne(sql, new Object[] {username,password}, new ResultSetHandler<User>() { @Override public User handleRow(ResultSet rs) throws SQLException { return new User( rs.getLong(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5), rs.getString(6), rs.getString(7)); } }); }
原文地址:https://www.cnblogs.com/zhou-jiayi/p/8810024.html
时间: 2024-09-30 14:58:02