Java培训技术之尝试编写通用的查询方法

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

尝试编写通用的查询方法

         /**

          * 执行查询操作的SQL语句,SQL可以带参数(?)

          * @param clazz Class 查询的结果需要封装的实体的Class类型,例如:学生Student,商品Goods,订单Order

          * @param sql String 执行查询操作的SQL语句

          * @param args Object… 对应的每个?设置的值,顺序要与?对应

          * @return T 封装了查询结果的实体

          * @throws Exception

          */

         public static <T> T get(Class<T> clazz,String sql,Object… args)throws Exception{

                  Connection conn = null;

                  PreparedStatement pst = null;

                  ResultSet rs = null;

                  T entity = null;

 

                  //1、获取连接

                  conn = JDBCUtils.getConnection();

                  //2、获取PreparedStatement对象,并预编译带参数?的SQL

                  pst = conn.prepareStatement(sql);

                  //3、设置参数?的值

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

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

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

                          }

                  }

                  //4、执行SQL

                  rs = pst.executeQuery();

                  //5、获取结果,封装到对象中

                  if(rs.next()){

                          entity = clazz.newInstance();

 

                          /*

                           * 需要解决的问题?

                           * (1)查询了哪些列,即需要为哪些属性赋值,这些列对应的属性名是什么

                           * (2)获取这些列的值,用反射为属性赋值

                           *

                           * clazz:只能得到所有属性,不知道sql中查询了哪些列

                           * 只能依赖sql

                           */

                  }

 

                  JDBCUtils.free(rs, pst, conn);

 

                  return entity;

         }

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


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

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

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

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

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

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