QueryRunner操作

QueryRunner操作


前面通过数据库连接池获取到了连接,传统方法就是在获取到连接后,通过连接得到prepareStatement来执行sql语句,进而来改变数据库。

String sql = "insert into table set(,,,,)values(?,?,?,?)";
PrepareStatement ps = conn.prepareStatement(sql);
ps.setObject(1,?);
ps.setObject(2,?);
ps.setObject(3,?);
ps.setObject(4,?);
ps.execute();
ps.close();
in.closer();
conn.close();

现在将通过prepareStatement对数据库进行CRUD进行封装,通过dbutils工具类使用queryRunner来操作。

1、导入commons-dbutils-jar包
2、调用QueryRunner的增删改查方法
2.1增删改是共用QueryRunner.uptate方法

只需要传入操作数据库的一条连接,增删改的sql语句以及sql语句中相应的参数即可。

public void testQueryRunner(){
Connection conn = null;
try{
	QueryRunner qr = new QueryRunner();
	conn = JDBCUtils.getConnection();
	String sql = "update table set ...";
	qr.update(conn,sql,...);
}catch(Exception e){
	e.printStackTrace:
}finally{
	JDBCUtils.closeResource(conn);
}
}
1.2查询操作对应QueryRunner.query()方法

在该方法中处了要传入连接操作数据库的连接,sql语句、返回的类型以及sql中的参数。其中,返回值类型多种多样,可以是查询返回单个对象,也可能是单个对象构成的集合、可能是数据库的数据量等等。

1.2.1 BeanHandler<>
public Customer testQueryRunnerForOneQuery(){
    Connection conn = null;
    try{
        conn = JDBCUtils.getConnection();
        QueryRunner qr = new QueryRunner();
        String sql = "select * from where id =?";
        BeanHandler<Customer> handler = new BeanHandler<>(Customer.class);
        Customer customer = qr.query(conn,sql,handler,sql,?);
        return customer;
        JDBCUtils.closeResource(conn);
        
    }
}
1.2.2 BeanListHandler<>
public List<Customer> testQueryRunnerForListQuery(){
    Connection conn = null;
    try{
        conn = JDBCUtils.getConnection();
        QueryRunner qr = new QueryRunner();
        String sql = "select * from table ";
        BeanListHandler<Customer> handler = new BeanListHandler<>(Customer.class);
        List<Customer> customer = qr.query(conn,sql,handler);
        return customer;
        JDBCUtils.closeResource(conn);
    }
}
1.2.3 MapHandler()方法

将查询到的结果中的字段和值通过键值对的形式存储到Map中

public void testQueryRunnerForMapQuery(){
    Connection conn = null;
    try{
        conn = JDBCUtils.getConnection();
        QueryRunner qr = new QueryRunner();
        String sql = "select * from table where id = ?";
        MapHandler handler = new MapHandler();
       	Map map = qr.query(conn,sql,handler,?);
        system.out.println(map);
        JDBCUtils.closeResource(conn);
    }
}
1.2.4 MapListHandler()方法

将查询到的结果中的多个对象存储到Map中

public void testQueryRunnerForMapListQuery(){
    Connection conn = null;
    try{
        conn = JDBCUtils.getConnection();
        QueryRunner qr = new QueryRunner();
        String sql = "select * from table ";
        MapListHandlder handler = new MapListHandler();
        List<Map<String,Object> customer = qr.query(conn,sql,handler);
       system.out.println (customer);
        JDBCUtils.closeResource(conn);
    }
}
1.2.ScalarHandler()方法
public void testQueryRunnerForScalarQuery(){
    Connection conn = null;
    try{
        conn = JDBCUtils.getConnection();
        QueryRunner qr = new QueryRunner();
        String sql = "select account(*) from table";
        ScalarHandler handler = new ScalarHandler();
        Long account = (Long)qr.query(conn,sql,handler);
       	system.out.println (account);
        JDBCUtils.closeResource(conn);
    }
}

ount = (Long)qr.query(conn,sql,handler);
system.out.println (account);
JDBCUtils.closeResource(conn);
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用QueryRunner操作Blob数据,您可以使用以下步骤: 1. 首先,确保您的数据库表中有一个Blob类型的列来存储二进制数据。 2. 创建一个QueryRunner对象并提供数据库连接信息,如数据库URL、用户名和密码。 ```java // 导入所需的类 import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ScalarHandler; // 创建QueryRunner对象 QueryRunner queryRunner = new QueryRunner(dataSource); // dataSource是您的数据库连接对象 ``` 3. 使用QueryRunner的`update()`方法来执行插入或更新Blob数据的SQL语句。您可以使用`PreparedStatement`来设置Blob参数。 ```java // 示例 - 将Blob数据插入到数据库表中 String sql = "INSERT INTO your_table (blob_column) VALUES (?)"; InputStream inputStream = new FileInputStream("path_to_your_blob_file"); int rowsAffected = queryRunner.update(sql, inputStream); ``` 4. 若要从数据库中检索Blob数据,可以使用QueryRunner的`query()`方法,并使用`ResultSetHandler`来处理结果。 ```java // 示例 - 从数据库中检索Blob数据 String sql = "SELECT blob_column FROM your_table WHERE id = ?"; Object[] params = { 1 }; // 设置参数,例如,检索id为1的记录的Blob数据 byte[] blobData = queryRunner.query(sql, new ScalarHandler<byte[]>(), params); ``` 这是一个简单的示例,演示了如何使用QueryRunner操作Blob数据。您可以根据自己的需求进行修改和扩展。请确保正确处理输入和错误情况,并关闭相关资源,如输入流和数据库连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值