JDBC的框架apache的dbutils的使用

本文介绍了如何使用Apache的DBUtils进行数据库连接和CRUD操作。首先,需要下载JAR包,然后通过配置druid.properties文件,创建数据库操作类及Bean实体层,最后展示了一个简单的测试代码示例,涉及了Customer表的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

apache的dbutils用于数据库的连接和数据库的CRUD操作,现在通过几个简单的测试方法演示最基本的使用
1 下载相应的JAR包
在这里插入图片描述
2 各个层次代码
在这里插入图片描述
3 代码如下
druid.properties属性配置文件

url=jdbc:mysql://localhost:3306/test1?useSSL=false&rewriteBatchedStatements=true
username=root
password=2222
driverClassName=com.mysql.jdbc.Driver

initialSize=10
maxActive=10

数据库操作类

package com.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import javax.xml.crypto.Data;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtil {
    public static Connection getConnectionDRUID()throws  Exception{
        Properties pros=new Properties();
        InputStream is=ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
        pros.load(is);
        DataSource source= DruidDataSourceFactory.createDataSource(pros);
        Connection conn=source.getConnection();
        return conn;
    }
    public static void closeAll(Connection con, Statement stmt, ResultSet rs){
        try{
            if(null!=con){
                con.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            if(null!=stmt){
                stmt.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            if(null!=rs){
                rs.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

bean实体层
package com.bean;

import java.sql.Date;

public class Customer {
private int cus_id;
private String cus_name;
private String cus_email;
private Date cus_birth;

public int getCus_id() {
    return cus_id;
}

public void setCus_id(int cus_id) {
    this.cus_id = cus_id;
}

public String getCus_name() {
    return cus_name;
}

public void setCus_name(String cus_name) {
    this.cus_name = cus_name;
}

public String getCus_email() {
    return cus_email;
}

public void setCus_email(String cus_email) {
    this.cus_email = cus_email;
}

public Date getCus_birth() {
    return cus_birth;
}

public void setCus_birth(Date cus_birth) {
    this.cus_birth = cus_birth;
}

@Override
public String toString() {
    return "Customer{" +
            "cus_id=" + cus_id +
            ", cus_name='" + cus_name + '\'' +
            ", cus_email='" + cus_email + '\'' +
            ", cus_birth=" + cus_birth +
            '}';
}

}
mysql数据库表结构
在这里插入图片描述
表记录内容
在这里插入图片描述
测试代码

package com.test;

import com.bean.Customer;
import com.mysql.cj.QueryResult;
import com.util.JDBCUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;
import org.junit.Test;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Main1 {
    //测试一下数据库连接用的是druid
    @Test
    public void test1Conn()throws Exception{
        Connection conn= JDBCUtil.getConnectionDRUID();
        String sql="select count(*) from goods";
        PreparedStatement pstm=conn.prepareStatement(sql);
        ResultSet rs=pstm.executeQuery();
        if(rs.next()){
            System.out.println(rs.getInt(1));
        }
    }
    //测试插入数据
    @Test
    public void test2Insert(){
         Connection conn=null;
         PreparedStatement pstm=null;
         try{
             QueryRunner runner=new QueryRunner();
             conn=JDBCUtil.getConnectionDRUID();
             String sql="insert into customer (cus_name,cus_email,cus_birth)values(?,?,?)";
             int insertCount=runner.update(conn,sql,"志刚谢谢","type@aa.com","1984-2-12");
             System.out.println("写入了。"+insertCount);
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             JDBCUtil.closeAll(conn,pstm,null);
         }
    }
    //测试查询
    /*
          BeanHander:是ResultSetHandler接口实现类,用于封装表中的一条记录。
     */
    @Test
    public void testQuery1(){
        Connection conn=null;
        try{
            conn=JDBCUtil.getConnectionDRUID();
            QueryRunner runner=new QueryRunner();
            String sql="select cus_name ,cus_email, cus_birth  from customer where cus_id=?";
            BeanHandler<Customer> handler=new BeanHandler<>(Customer.class);
            Customer customer=runner.query(conn,sql,handler,1);
            System.out.println(customer);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.closeAll(conn,null,null);
        }
    }
    /*
        BeanListHandler:是ResultSetHandler接口实现类,可以查询多条记录。
     */
    @Test
    public void testQuery2(){
        Connection conn=null;
        try{
            conn=JDBCUtil.getConnectionDRUID();
            QueryRunner runner=new QueryRunner();
            String sql="select cus_name ,cus_email, cus_birth  from customer";
            BeanListHandler<Customer> handler=new BeanListHandler<>(Customer.class);

            List<Customer> list=runner.query(conn,sql,handler);
            Iterator<Customer> iter=list.iterator();
            while (iter.hasNext()){
                System.out.println(iter.next());
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.closeAll(conn,null,null);
        }
    }
     /*
         MapHander:是ResultSetHandler接口的实现类,对应表中的1条记录。
         将字段对应的值作为key和value
     */
     @Test
    public void testQuery3(){
         Connection conn=null;
         try{
             QueryRunner runner=new QueryRunner();
             conn=JDBCUtil.getConnectionDRUID();
             String sql="select cus_name ,cus_email, cus_birth  from customer";
             MapHandler handler=new MapHandler();
             Map<String,Object>map=runner.query(conn,sql,handler);

                 System.out.println(map);


         }catch (Exception e){
             e.printStackTrace();
         }
     }
     /*

      */
     @Test
    public void testQuery4(){
          Connection conn=null;
          try{
              QueryRunner runner=new QueryRunner();
              conn=JDBCUtil.getConnectionDRUID();
              String sql="select cus_name ,cus_email, cus_birth  from customer";
              MapListHandler handler=new MapListHandler();
              List<Map<String,Object>> list=runner.query(conn,sql,handler);
               Iterator it=list.iterator();
               while (it.hasNext()){
                   System.out.println(it.next());
               }
          }catch (Exception e){
              e.printStackTrace();
          }finally {
              JDBCUtil.closeAll(conn,null,null);
          }
     }
     @Test
    public void testQuery5(){
         Connection conn=null;
         try{
             QueryRunner qr=new QueryRunner();
             conn=JDBCUtil.getConnectionDRUID();
             String sql="select count(*) from goods";
             ScalarHandler handler=new ScalarHandler();
             Long count=(Long)qr.query(conn,sql,handler);
             System.out.println(count);
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             JDBCUtil.closeAll(conn,null,null);
         }
     }
     @Test
    public void testQuery6(){
         Connection conn=null;
         try{
             QueryRunner qr=new QueryRunner();
             conn=JDBCUtil.getConnectionDRUID();
             String sql="select max(cus_birth) from customer";
             ScalarHandler handler=new ScalarHandler();
             Date maxBirth=(Date)qr.query(conn,sql,handler);
             System.out.println(maxBirth);
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             JDBCUtil.closeAll(conn,null,null);
         }
     }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值