Java培训之使用QueryRunner类实现查询

发布时间:2019年12月19日作者:atguigu浏览次数:916

使用QueryRunner类实现查询

  • public Object query(Connection conn, String sql, ResultSetHandler rsh,Object… params) throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
  • public Object query(String sql, ResultSetHandler rsh, Object… params) throws SQLException: 几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。
  • public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException : 执行一个不需要置换参数的查询操作。
  • public Object query( String sql, ResultSetHandler rsh) throws SQLException : 执行一个不需要置换参数的查询操作。

ResultSetHandler接口

该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。

ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet  rs)

该方法的返回值将作为QueryRunner类的query()方法的返回值。

         @Test

         public void testResultSetHandler() {

                  // 1.创建QueryRunner的实例

                  QueryRunner qr = new QueryRunner();

 

                  Connection conn = null;

 

                  try {

                          // 2.获取连接

                          conn = JDBCTools.getConnection();

 

                          class MyResultSetHandler implements ResultSetHandler{

                                   @Override

                                   public Object handle(ResultSet rs) throws SQLException {

                                            Student stu = new Student();

                                            if (rs.next()) {

                                                     stu.setId(rs.getInt(1));

                                                     stu.setSname(rs.getString(2));

                                                     stu.setSex(rs.getString(3));

                                                     stu.setMajor(rs.getString(4));

                                                     stu.setClasses(rs.getString(5));

                                            }

                                            return stu;

                                   }

                          }

 

                          String sql = “select sno,sname,sex,major,classes from t_stu where sno =?”;

                          // 3、使用query方法

                          // QueryRunner 的 query 方法的返回值取决于其 ResultSetHandler 参数的handle 方法的返回值

                          Object obj = qr.query(conn, sql, new MyResultSetHandler(),1);

 

                          System.out.println(obj);

                  } catch (SQLException e) {

                          e.printStackTrace();

                  } finally {

                          JDBCTools.free(null, null, conn);

                  }

         }

  • ArrayHandler:把结果集中的第一行数据转成对象数组。
  • ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
  • BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
  • BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
  • ColumnListHandler:将结果集中某一列的数据存放到List中。
  • KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
  • MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
  • MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List

想要了解跟多关于Java培训机构课程内容欢迎关注尚硅谷Java培训机构,尚硅谷除了这些技术文章外还有免费的高质量Java培训机构课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训 UI/UE设计培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)

西安市高新区和发智能大厦(西安校区)