封装数据通用的查询方法(多行查询 单行查询 ) 以及调用时候需要注意的事项

    /**
     *
     * @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&&params.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

封装数据通用的查询方法(多行查询 单行查询 ) 以及调用时候需要注意的事项的相关文章

子查询一(WHERE中的子查询)

子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念. 子查询返回结果子查询可以返回的数据类型一共分为四种: 单行单列:返回的是一个具体列的内容,可以理解为一个单值数据: 单行多列:返回一行数据中多个列的内容: 多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围: 多行多列:查询返回的结果是一张临时表: 在WHERE子句中使用子查询 在WHERE子句之中处理单行单列子查询.多行单列子查询.单行

封装自己通用的 增删改查的方法 By EF

封装自己的通用CURD By EF using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Linq; using System.Linq.Expressions; using System.Text; using MODEL; namespace ZRFDEMO.DAL { public clas

通用路由封装简介和基本配置方法

众所周知,IPSec可用于封装各种诸如路由器到路由器,防火墙到路由器,PC到路由器和PC到服务器之间的数据包,以保证数据包在这些设备之间的传输安全.它包含2种数据封装方式,他们是通道模式和传输模式.传输模式仅封装数据包的有效负载,而通道模式还会额外封装数据包的报头. 在本文中,让我们一起关注IPSec通道模式中的一个比较常用的封装方法:通用路由封装(Generic Routing Encapsulation,以下简称GRE). GRE会使用一种GRE专有的封装报头来加密数据包的报头和有效负载.网

通用权限管理系统底层的参数化查询方法如何使用

通用权限管理系统底层的数据访问方法支持参数化查询. 先前没有使用参数化查询的语句是这样的 string conmmondText = " SELECT A.SITE_ID AID, A.SITE_NAME ANAME, B.SITE_ID BID, B.SITE_NAME BNAME" + " FROM (SELECT 1 AS ID, SITE_NAME, SITE_ID" + " FROM AREA_SUB" + " WHERE A

ERP数据通用存储过程封装(三)

引用:DAL:System.Data.SqlClient;System.Data; namespace CommTool { public class SqlComm { /// <summary> /// 根据指定条件,删除指定的表里面的数据 /// </summary> /// <param name="tableName">指定表名</param> /// <param name="condition"&g

封装数据库查询方法

---恢复内容开始--- 对于数据繁琐的各式各样的查询语句,每次都要写上一大段查询代码,不仅造成代码冗余,而且还浪费时间.下面给出自己写的一个数据库查询方法封装: 1 public class AllSelect { 2 public static List<Object> Select(String sql,String className) throws Exception{ 3 //连接数据库 4 Connection conn = new MyConnection().getConne

Django数据查询方法总结

__exact 精确等于 like 'aaa'__iexact 精确等于 忽略大小写 ilike 'aaa'__contains 包含 like '%aaa%'__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains.__gt 大于__gte 大于等于__lt 小于__lte 小于等于__in 存在于一个list范围内__startswith 以-开头__istartswith 以-开头 忽略大小写__en

sql语句查询后几行数据并倒着排列

$conn = mysql_connect("数据库地址","用户名","密码"); if(!$conn) { die("mysql conn failed"); } else{ mysql_query("SET NAMES 'utf8'"); mysql_select_db("数据表",$conn); if(!$conn) { die("database selected f

使用ResultSet,写了一个通用的查询方法

此方法很烂,以后优化 /** * 通用的查询方法:SELECT */ @SuppressWarnings({ "unchecked", "rawtypes" }) public List testResultSet(String sql) { Connection connection = null; Statement statement = null; ResultSet rs = null; try { // 1.获取Connection connection