Apache DbUtils工具类初学_commons-dbutils springboot-程序员宅基地

技术标签: dbutil  工具类  java  web  数据库  

下载jar包:(Linux下载1,Windows下载2)
http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi
在这里插入图片描述
Apache DbUtils跟我们学jdbc时自己写的DBUtil很相似,只不过功能更加强大,我们不需要自己写工具类了,使用Apache DbUtils可以大量节省时间精力。不难,只需要知道有哪些主要的类会用就ok

1.查询:

//以下方法全为ResultSetHandler的实现类
	public static void testDbUtilQuery(){
    
        QueryRunner runner = new QueryRunner(DataSourceUtil.getDataSortceByC3P0());
        try {
    
            //1.用数组接收查询到数据的第一行
            System.out.println("1.用数组接收查询到数据的第一行");
            Object[] object = runner.query("select * from student where sno > ?",new ArrayHandler(),1);
            System.out.println(Arrays.toString(object));

            //2.用集合数组接收查询到的所有数据
            System.out.println("*****************************************");
            System.out.println("2.用集合数组接收查询到的所有数据");
            List<Object[]> objects = runner.query("select * from student where sno > ?",new ArrayListHandler(),1);
            for (Object[] objects1 : objects) {
    
                System.out.print(Arrays.toString(objects1));
            }

            //3.用对象数组接收查询到的数据的第一行
            System.out.println("*****************************************");
            System.out.println("3.用对象数组接收查询到的数据的第一行");
            Student student = runner.query("select * from student where sno > ?",new BeanHandler<Student>(Student.class),1);
            System.out.println(student);

            //4.用对象数组接收查询到的所有数据
            System.out.println("*****************************************");
            System.out.println("4.用对象数组接收查询到的所有数据");
            List<Student> students = runner.query("select * from student where sno > ?",new BeanListHandler<Student>(Student.class),1);
            System.out.println(students);

            //5.在4的基础上加个key(Oracle中默认的数据类型是BigDecimal)
            System.out.println("*****************************************");
            System.out.println("5.在4的基础上加个key");
            Map<BigDecimal,Student> studentMap = runner.query("select * from student where sno > ?",new BeanMapHandler<BigDecimal,Student>(Student.class,"sno"),1);
            System.out.println(studentMap);

            //6.在5的基础上再加个key
            System.out.println("*****************************************");
            System.out.println("6.在5的基础上加个key");
            Map<String,Map<String,Object>> studentMaped = runner.query("select * from student where sno > ?",new KeyedHandler<String>("sname"),1);
            System.out.println(studentMaped);

            //7.查询某一列
            System.out.println("*****************************************");
            System.out.println("7.查询某一列");
            List<String> studentColumn = runner.query("select * from student where sno > ?",new ColumnListHandler<String>("sname"),1);
            System.out.println(studentColumn);

            //8.查询行数
            System.out.println("*****************************************");
            System.out.println("8.查询行数");
            BigDecimal studentCount = runner.query("select count(1) from student where sno > ?",new ScalarHandler<BigDecimal>(),1);
            System.out.println(studentCount);

        } catch (SQLException e) {
    
            e.printStackTrace();
        }
    }
    //增删改
    public static void testDbUtilUpdata() throws SQLException {
    
        QueryRunner queryRunner = new QueryRunner(DataSourceUtil.getDataSortceByC3P0());
        //删除
        System.out.println("删除:" + queryRunner.update("delete from student where sno = ?", new Object[]{
    12}));
        //插入
        System.out.println("插入:" + queryRunner.update("insert into student values(?,?,?,?)", new Object[]{
    12, "郭金", 56, "阿拉尔"}));
        //修改
        System.out.println("修改:" + queryRunner.update("update student set sname = ? where sno = ?", new Object[]{
    "郭金xiugai",12}));
    }

    public static void main(String[] args) throws SQLException {
    
        testDbUtilQuery();
        testDbUtilUpdata();
    }

运行截图:
在这里插入图片描述

愿你心如花木,向阳而开

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nbcsdn/article/details/97375106

智能推荐

模板与泛型编程_模版是复用代码的一中机制,利用模版可以进行与类型无关的程序设计-程序员宅基地

文章浏览阅读239次。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。模板的格式template<typename T1, typename T2,…,typename Tn>返回值类型 函数名(参数列表){}模板分为类模板和函数模板模板它本身并不是函数,是编译..._模版是复用代码的一中机制,利用模版可以进行与类型无关的程序设计

如何将访问的接口去掉token验证_不通微服务开发阶段怎样取消sa_token验证-程序员宅基地

文章浏览阅读9.9k次。如何将访问的接口去掉token验证项目应用:springboot oath2完成此操作需要修改两个模块的application.yml文件修改,一个是getway网关的yml文件,另一个则是接口所在模块的yml文件_不通微服务开发阶段怎样取消sa_token验证

解决SVN Can’t open file ‘/XXX/xxx/db/txn-current-lock’错误_svn cant open file-程序员宅基地

文章浏览阅读1.8w次。今天用非root账号,用sudo 命令 添加了两个账号,然后重启服务···可以正常取出东西,但是不能提交···报的错就是 : 不能打开文件“/var/svn/svnrepos/db/txn-current-lock”: 权限不够查了半天 找到了解决办法,原文链接:http://blog.sina.com.cn/s/blog_7139569d0100woar.htm_svn cant open file

Microsoft Visual Studio 2019正式版离线安装包下载_microsoft vcredist 2019-程序员宅基地

文章浏览阅读2.4w次,点赞11次,收藏44次。原文地址:https://www.bitecho.net/microsoft-visual-studio-2019.html#respondVisual Studio(简称VS)是微软公司的开发工具包系列产品,包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等,并且几乎适用于所有开发平台。微软于4月3日正式发布了Visual Studio 2019正式版,在IDE、性能、常规调试、源控制和Team管理器、编程语言、Web技术、Xamarin移动..._microsoft vcredist 2019

Hadoop (一) ——hadoop基础知识_hadoopcore基础-程序员宅基地

文章浏览阅读869次。hadoop的应用场景在线旅游:目前全球范围内80%的在线旅游网站都是在使用Cloudera公司提供的Hadoop发行版,其中SearchBI网站曾经报道过的Expedia也在其中。移动数据:Cloudera运营总监称,美国有70%的智能手机数据服务背后都是由Hadoop来支撑的,也就是说,包括数据的存储以及无线运营商的数据处理等,都是在利用Hadoop技术。电子商务:这一场景应该是非常确定的,eBay就是最大的实践者之一。国内的电商在Hadoop技术上也是储备颇为雄厚的。能源开采:美国Che_hadoopcore基础

C++:类的应用-构建一个简单的Date类_c++定制类模板class b <date>-程序员宅基地

文章浏览阅读415次。在初步认识了类的构造方法,尤其是六大默认成员函数以及重载运算符后,我们就可以利用这些特性,来DIY一个自己的类,我的选择是构建一个可以进行日期方面运算/判断的类:需要实现的功能:赋值运算(=);加减天数还有前/后置++和–;计算出两个日期之间相差了多少天判断两个日期的大小(>,==,<);额外关系运算(>=,<=);因为Date是一个自定义类型,所有上述的所..._c++定制类模板class b

随便推点

leetcode 16 最接近的三数之和_最接近的三数之和 时间复杂度-程序员宅基地

文章浏览阅读145次。据说这个题很容易考,嘻嘻嘻,我自己做做。。。每做一个题 它还有变形,我又要开始思考。。。。。所有算法题里面我最讨厌 矩阵 矩阵,数学都没有搞明白矩阵,你还要我写代码。。。说明我今年变聪明了。。。。我做题都是非常简单思路,大道至简。就是如果这三个数之和刚好与target相等就直接输出,如果不是 就看范围。找到距离这个target最近的两个数。min,max最后用绝对值比较一下就可以了..._最接近的三数之和 时间复杂度

理解傅里叶变换算法(一)_求序列的5点dft-程序员宅基地

文章浏览阅读710次。经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上作者:July、dznlong 二零一一年二月二十日推荐阅读:The Scientist and Engineer's Guide to Digital Signal Processing,By Steven W. Smith, Ph.D。此书地址:http://www.dspguide.com/pdfbook.htm_求序列的5点dft

CGB2106-Day08-程序员宅基地

文章浏览阅读5.2k次,点赞7次,收藏18次。1.简化axios调用2.vue组件化3.vue中路由机制

家庭用计算机是一体好还是,国产家用电脑一体机,性能够用就好!!!-程序员宅基地

文章浏览阅读322次。作为一个80后,自从90年代开始接触电脑,一路走来也有20多年。电脑一代一代不断的升级创新,从笨重的机箱慢慢演化成超薄的一体机,省略掉了繁重的机箱显示器和音响,节省了桌面空间,以全新的超薄形象带来了更加清爽的体验。逼格瞬间提升有木有。一体机最早是在1998年由苹果研发推出的。一体机的特性就在于巧妙的将主机和显示器整合为一体。内部元件高度集成。并且随着无线技术的发展,电脑一体机的键盘、鼠标与显示器可..._家庭上网用一体机好吗

rs232读取智能电表_台达标准型多功能电表DPM-C520-程序员宅基地

文章浏览阅读261次。台达标准型多功能电表DPM-C520台达标准型多功能电表DPM-C520 ,为因应自动化市场快速发展、以及智能制造的趋势,所设计出的盘面安装式三相智能电表,具备精度高的特点,适用于配电盘的环境使用。● 可支持各种电力参数量测及谐波量测● 支持报警设定、参数群组化设定● 采用MODBUS协议,可广泛应用于各种控制系统,SCADA系统和能源管理系统中,是构建能源管理系统、节能监测系统的理想选择。产品特..._台达c520表485通讯说明

js高级技巧——函数绑定 bind()_js function bind-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏3次。函数绑定要创建一个函数,可以在特定的this环境中以指定参数去调用另一个函数(即可以创建始终在指定环境中运行的函数)这个技巧和回调函数与事件处理程序一起使用,可以实现将函数作为变量传递的同时,保留代码运行的环境. 例子: var handler = { message: "event handle", handleClick: function (event) { alert(this.message); _js function bind