尚硅谷JDBC

117 篇文章 0 订阅
116 篇文章 0 订阅

2.7工具类通用的查询单值

         //通用的查询方法之三:查询单个值

         //单值:select max(salary) from employee;   一行一列

         //select count(*) from t_goods; 一共几件商品

         public static Object getValue(String sql,Object... args)throws Exception{

                   //2、获取连接

                   Connection conn = JDBCUtils.getConnection();

                  

                   //3、对sql进行预编译

                   PreparedStatement pst = conn.prepareStatement(sql);

                  

                   //4、对?进行设置值

                   if(args!=null && args.length>0){

                            for (int i = 0; i < args.length; i++) {

                                     pst.setObject(i+1, args[i]);

                            }

                   }

                  

                   //5、执行sql

                   ResultSet rs = pst.executeQuery();

                  

                   Object value = null;

                   if(rs.next()){//一行

                            value = rs.getObject(1);//一列

                   }

                  

                   //6、释放资源

                   JDBCUtils.closeQuietly(rs,pst,conn);

                  

                   return value;

         }

 

2.8工具类通用的查询一行多列,非实体

         //通用的查询方法之四:查询多行多列,但每一行又不是一个JavaBean

         /*

          * SELECT did,AVG(salary),MAX(Salary) FROM t_employee GROUP BY did;

          * did       avg(salary)        max(salary)

                   1       1990.90             8900

                   2       4889                   6899

          */

         public static List<Map<String,Object>> getListMap(String sql,Object... args)throws Exception{

                   //2、获取连接

                   Connection conn = JDBCUtils.getConnection();

                  

                   //3、对sql进行预编译

                   PreparedStatement pst = conn.prepareStatement(sql);

                  

                   //4、对?进行设置值

                   if(args!=null && args.length>0){

                            for (int i = 0; i < args.length; i++) {

                                     pst.setObject(i+1, args[i]);

                            }

                   }

                  

                   //5、执行sql

                   ResultSet rs = pst.executeQuery();

                   //获取结果集的元数据对象

                   ResultSetMetaData metaData = rs.getMetaData();

                   //一共有几列

                   int count = metaData.getColumnCount();

                   //创建List

                   ArrayList<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

                    

                   while(rs.next()){

                            //每一行是一个Map的对象

                            HashMap<String,Object> map = new HashMap<String,Object>();

                           

                            //map的key是列名

                            for (int i = 0; i < count; i++) {

                                     //(1)获取列名或别名

                                     String columnName = metaData.getColumnLabel(i+1);

                                     //(2)获取对应的值

                                     Object value = rs.getObject(i+1);

                                     //(3)把这对值放到map中

                                     map.put(columnName, value);

                            }

                           

                            //把map放到List中

                            list.add(map);

                   }

                  

                   //6、释放资源

                   JDBCUtils.closeQuietly(rs,pst,conn);

                  

                   return list;

         }

 

2.9工具类通用的查询多行多列,非实体

         //通用的查询方法之四:查询一行多列,但一行又不是一个JavaBean

         public static Map<String,Object> getMap(String sql,Object... args)throws Exception{

                   List<Map<String, Object>> listMap = getListMap(sql,args);

                   if(listMap.size()>0){

                            return listMap.get(0);

                   }

                   return null;

         }

 

 

 


本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值