zoukankan      html  css  js  c++  java
  • 学习DButils笔记

    DBUtills:

    ***********************

    1:创建对象:QueryRunner的对象,其中创建的方式有两种:

      ①QueryRunner qr = new QueryRunner();

        **********这种是不用传递形参的;

      ②QueryRunner qr = new QueryRunner(new DataSource ());

    2:利用 qr 来进行对数据库的增删改

      都是来调用qr.update(sql,params)

    3:最重要的是对数据的查询操作

      来调用qr.query(sql,resulSettHandler<>(type),params)

      其中ResultHandler是一个泛型类,根据查询到的返回的值得类型不同,有与之对应的实现类

      ①:当返回的是一个java bean时,可以使用BeanHandler<T>(type),一般用于查询结果式单行的

      ②:当返回的是一个 多行的结果集时,我们可以使用 BeanListHandler<T>(type) 来返回一个Java bean 的List

       ××③:当进行多表查询时,公共的字段就要在一个类中把字段的类型改为另一个类的类型,此时可以通过查询两次然后使用 set 方法来把一个结果当做变量设置进去,但是这样做,查询两次是十分耗费资源的。因此我们可以通过 MapHandler() 来返回一个 map 对象,得到 map 后就好办了,我们是用自己的小工具 toBean 来把一个 map 转化为一个Java bean

      

    public static <T> T toBean(Map map,Class<T> clazz) {
            T bean;
            try {
                bean = clazz.newInstance();
                BeanUtils.populate(bean, map);
            } catch (Exception e) {
                throw new RuntimeException(e);// TODO: handle exception
            }
            return bean;
        }
     1 public Student load2(String sid) throws SQLException {
     2         String sql = "SELECT * FROM students,provinces WHERE sid = ? AND students.p_name=provinces.p_name";
     3 //        Student student =  qr.query(sql, new BeanHandler<Student>(Student.class),sid);
     4 ////        System.out.println(student.toString());
     5 //        Province p_name = qr.query(sql, new BeanHandler<Province>(Province.class),sid);
     6 ////        System.out.println(p_name.toString());
     7 //        student.setProvince(p_name);
     8         
     9         Map map = qr.query(sql, new MapHandler(),sid);
    10         System.out.println(map);
    11         Student stu = CommonUtils.toBean(map, Student.class);
    12         System.out.println(stu);
    13         Province pro = CommonUtils.toBean(map, Province.class);
    14         stu.setProvince(pro);
    15         return stu;
    16     }

      ④:多表查询时返回多条消息时,ResultSetHandler 的实现类可以使用 MapListHandler()

      ⑤:当返回的结果集是某一行时,我们可以使用ColumnsListHandler();

      ⑥:当返回的结果集是单行单列时,我们可以使用ScalarHandler()结果集处理器

     

  • 相关阅读:
    数据库优化
    Oracle语句集锦
    MVC Razor标签
    转载 操作MyBatis基础
    mysql sqlserver Oracle字符串连接
    Word
    部署IIS错误
    => 朗姆达表达式带入符号
    wcf例子01
    idea通过springboot初始化器新建项目
  • 原文地址:https://www.cnblogs.com/zhaoningzyn/p/8647453.html
Copyright © 2011-2022 走看看