JavaUtils的增删改查操作的举例详析

1. 准备Jar包(导包操作),配置文件

<c3p0-config>
    <named-config name="myc3p0">
        <!-- 驱动包 -->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <!-- 数据库的地址 -->
        <property name="jdbcUrl">jdbc:mysql:///day0904</property>
        <!-- 数据库的用户名 -->
        <property name="user">root</property>
        <!-- 数据库的密码 -->
        <property name="password">1234</property>
        <!-- 连接池中默认的连接对象的数量 -->
        <property name="initialPoolSize">3</property>
        <!-- 连接对象的最大数量 -->
        <property name="maxPoolSize">5</property>
        <!-- 获取连接对象的超时时间 -->
        <property name="checkoutTimeout">3000</property>
    </named-config>

    <default-config>
        <!-- 驱动包 -->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <!-- 数据库的地址 -->
        <property name="jdbcUrl">jdbc:mysql:///day0903</property>
        <!-- 数据库的用户名 -->
        <property name="user">root</property>
        <!-- 数据库的密码 -->
        <property name="password">1234</property>
        <!-- 连接池中默认的连接对象的数量 -->
        <property name="initialPoolSize">5</property>
        <!-- 连接对象的最大数量 -->
        <property name="maxPoolSize">8</property>
        <!-- 获取连接对象的超时时间 -->
        <property name="checkoutTimeout">3000</property>
    </default-config>
</c3p0-config>

2. 获取连接池

package com.fy.utils;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;

/**
 * 1.准备jar包
 * 2.获取连接池
 */
public class JdbcUtils {
    
    
    private static ComboPooledDataSource ds = new ComboPooledDataSource("myc3p0");

    //获取池对象
    public static DataSource getDataSource(){
    
    
        return ds;
    }
}

项目总览

项目总览

3. 增删改的功能实现:创建dbutils的核心类对象queryRunner

package com.fy.test;

import com.fy.utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;

import java.sql.SQLClientInfoException;
import java.sql.SQLException;
import java.util.Scanner;


/**
 * 3.功能实现:
 * 创建dbutils的核心类对象queryRunner;
 * 创建连接池对象的两种方式:
 * (1).不指定使用的连接池,在执行后续的crud操作时,需手动传入连接对象
 * QueryRunner qr = new QueryRunner();
 * (2).指定了连接池,在执行后续的crud操作时,不需要再手动传入连接对象,dbutils会自动从连接池中获取连接对象
 * QueryRunner qr = new QueryRunner(DataSourse ds);
 */
public class Test {
    
    
    public static void main(String[] args) throws Exception {
    
    

        //创建连接池对象qr
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());


        //添加操作 增删改:update()方法
        //qr.update("insert into user values(null,?,?)","ff","000");

        //执行sql中的删除操作
        /*String sql = "delete from user where uid = ?";
        Object[] params = {14};
        qr.update(sql, params);*/

        //执行SQL修改操作
        Scanner sc = new Scanner(System.in);
        System.out.println("输入姓名:");
        String username = sc.next();
        System.out.println("输入新密码:");
        String password = sc.next();
        String sql = "update user set upassword = ? where username = ?";
        Object[] params = {
    
    password,username};
        qr.update(sql,params);
        //返回影响的记录数
        int row = qr.update(sql, params);
        System.out.println(row);

    }
}

查询的功能实现

1. 创建User实例
package com.fy.domain;

public class User {
    
    
    private int id;
    private String username;
    private String password;

    public User() {
    
    
        super();
    }

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getUsername() {
    
    
        return username;
    }

    public void setUsername(String username) {
    
    
        this.username = username;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }

    @Override
    public String toString() {
    
    
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

package com.fy.vo;

public class QueryVo {
    
    
    private int avg;
    private int max;

    public int getAvg() {
    
    
        return avg;
    }

    public void setAvg(int avg) {
    
    
        this.avg = avg;
    }

    public int getMax() {
    
    
        return max;
    }

    public void setMax(int max) {
    
    
        this.max = max;
    }
}

2. 查询功能代码实现

package com.fy.test;

import com.fy.domain.User;
import com.fy.utils.JdbcUtils;
import com.fy.vo.QueryVo;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;

import javax.tools.ForwardingFileObject;
import java.util.*;

public class TestQuery {
    
    

    public static void main(String[] args) throws Exception {
    
    
        f9();
    }

    public static void f1() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //起别名,字段名与属性名保持一致
        String sql = "select uid id, username,upassword password from user where uid = 8";
        //创建BeanHandler对象:将查询到的结果封装成一个对象,查询到的是一条记录
        User u = qr.query(sql,new BeanHandler<User>(User.class));
        System.out.println(u);

    }

    public static void f2() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句,通过起别名,使字段名与属性名保持一致
        String sql = "select uid id, username,upassword password from user";
        //创建BeanListHandler对象:将查询到的结果封装成集合对象,查询到的是多条记录
        List<User> users = qr.query(sql,new BeanListHandler<User>(User.class));
        for(User user:users){
    
    
            System.out.println(user);
        }
    }

    public static void f3() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select avg(uid),max(uid) from user";
        //创建ScalarHandler对象:用于聚合函数操作
        Object o = qr.query(sql,new ScalarHandler(2));//数字2是指将max(uid)这一列输出显示
        Object z = qr.query(sql,new ScalarHandler("avg(uid)"));
        System.out.println(o);
        System.out.println(z);

    }


    public static void f4() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select avg(uid) avg,max(uid) max from user";
        QueryVo vo = qr.query(sql, new BeanHandler<QueryVo>(QueryVo.class));
        System.out.println(vo.getAvg());
        System.out.println(vo.getMax());

    }

    public static void f5() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select uid id,username,upassword password from user where uid = ?";
        Object[] o = qr.query(sql, new ArrayHandler(), 15);
        System.out.println(Arrays.toString(o));

    }


    public static void f6() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select uid id,username,upassword password from user";
        List<Object[]> o = qr.query(sql, new ArrayListHandler());
        for(Object[] objects:o){
    
    
            for(Object object:objects){
    
    
                //System.out.println(object);
                System.out.println(Arrays.toString(objects));
            }
        }
    }


    public static void f7() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select uid id,username,upassword password from user";
        //List<Object> o = qr.query(sql, new ColumnListHandler());//拿到第一列字段
        List<Object> o = qr.query(sql, new ColumnListHandler(3));//拿到第3列字段
        //循环遍历
        for(Object object:o){
    
    
            System.out.println(object);
        }
    }

    public static void f8() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select uid id,username,upassword password from user where uid = ?";
        Map<String, Object> map = qr.query(sql, new MapHandler(), 15);
        //System.out.println(map);
        Set<Map.Entry<String, Object>> set = map.entrySet();
        Iterator<Map.Entry<String, Object>> it = set.iterator();
        while (it.hasNext()) {
    
    
            Map.Entry<String, Object> en = it.next();
            System.out.println(en.getKey()+"---"+en.getValue());
        }
    }

    public static void f9() throws Exception {
    
    

        //创建池对象
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
        //SQL语句
        String sql = "select uid id,username,upassword password from user";
        List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
        for(Map<String, Object> map:list) {
    
    
            System.out.println(map);
        }
    }
}

3. 运行结果

3.1 数据库数据

数据库数据

3.2 BeanHandler对象查询

BeanHandler

3.3 BeanListHandler对象查询

BeanListHandler

3.4 ScalarHandler对象查询

ScalarHandler

3.5 MapListHandler对象查询

MapListHandler

猜你喜欢

转载自blog.csdn.net/zhu_fangyuan/article/details/108434812