DButil(增,删,改,查)整理

这篇博客主要介绍了新手如何使用DButil进行数据库的增删改查操作,包括QueryRunner类的使用,如insert、query和update方法,以及ResultSetHandler的BeanHandle和BeanListHandle。文章还详细阐述了实现这一过程的步骤,从创建实体类到配置C3P0数据源,以及编写StuDao接口和测试类。

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

新手入门

  • API关键字:

QueryRunner
insert(String sql,ResultSetHandle,Object… args):添加操作
query(String sql,ResultSetHandle,Object… args):查询操作
update(String sql,Object… args)
ResultSetHandler:把ResultSet转对象
BeanHandle(Class type);
BeanListHandle(Class type);

  • 编写StuDao步骤
    1.创建实体类student
    2.stuDao接口,并先定义方法
    3.创建实现类studentDaoImpl
    4.使用BDUtils中的QueryRunner类
    5.QueryRunner在实例化的时候需要数据源
    6.创建c3p0数据源(c3p0-config.xml)文件放在src

编写实体类

package cn.kgc.demo.day04demo.BDUtils;

import java.util.Date;

public class student {
    private String s_id;
    private String s_name;
    private String s_sex;
    private Date s_birthday;
    private String s_class;

    public String getS_id() {
        return s_id;
    }

    public void setS_id(String s_id) {
        this.s_id = s_id;
    }

    public String getS_name() {
        return s_name;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public String getS_sex() {
        return s_sex;
    }

    public void setS_sex(String s_sex) {
        this.s_sex = s_sex;
    }

    public Date getS_birthday() {
        return s_birthday;
    }

    public void setS_birthday(Date s_birthday) {
        this.s_birthday = s_birthday;
    }

    public String getS_class() {
        return s_class;
    }

    public void setS_class(String s_class) {
        this.s_class = s_class;
    }

    public student(String s_id, String s_name, String s_sex, Date s_birthday, String s_class) {
        this.s_id = s_id;
        this.s_name = s_name;
        this.s_sex = s_sex;
        this.s_birthday = s_birthday;
        this.s_class = s_class;
    }

    public student() {
    }

    @Override
    public String toString() {
        return s_id+s_name+s_sex+s_birthday;
    }
}

实体类方法接口

package cn.kgc.demo.day04demo.BDUtils;

import java.sql.SQLException;
import java.util.List;

public interface UserDao {
    public List<student> queryStuAll() throws SQLException;

    public void addStu(student stu) throws SQLException;

    public void deleteStu (Integer s_id) throws SQLException;

    public void updateStu(Integer s_id) throws SQLException;

    public void queryStu(student stu);
}

接口实现类

package cn.kgc.demo.day04demo.BDUtils;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class UserDaoImpl implements UserDao {
    private ComboPooledDataSource dataSource=new ComboPooledDataSource();
    private QueryRunner qr=new QueryRunner(dataSource);

    //查所有
    @Override
    public List<student> queryStuAll() throws SQLException {
            String sql="   select * from student   ";
            List<student> studentList=qr.query(sql,new BeanListHandler<student>(student.class));
            return studentList;

    }

    //增
    @Override
    public void addStu(student stu) throws SQLException {
        String sql = " insert into student(s_id,s_name,s_sex,s_birthday,s_class)values(?,?,?,?,?)" ;
        qr.insert(sql,new BeanHandler<student>(student.class),stu.getS_id(),stu.getS_name(),stu.getS_sex(),stu.getS_birthday(),stu.getS_class());
    }

    //删
    @Override
    public void deleteStu(Integer s_id) throws SQLException {
        String sql="   delete from student where s_id=?   ";
        qr.insert(sql,new BeanHandler<student>(student.class),s_id);
    }

    //改
    @Override
    public void updateStu(Integer s_id) throws SQLException{
        String sql="   update student set s_name='张三' where s_id=?   ";
        qr.insert(sql,new BeanHandler<student>(student.class),s_id);
    }

    @Override
    public void queryStu(student stu) {

    }
}

测试类

package cn.kgc.demo.day04demo.BDUtils;

import org.junit.Test;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;

public class testStudent {
    //查
    @Test
    public void stuDao1()throws Exception{
        UserDao U1=new UserDaoImpl();
        List<student> stus=U1.queryStuAll();
        for(student a:stus){
            System.out.println(a.getS_id()+"\t"+a.getS_name()+"\t"+a.getS_sex()+"\t"+a.getS_birthday()+"\t"+a.getS_class());
        }
    }

    //增
    @Test
    public void stuDao2() throws Exception{
        UserDao U2=new UserDaoImpl();
        student stu=new student();
        stu.setS_id("123");
        stu.setS_name("赵云");
        stu.setS_sex("男");
        stu.setS_birthday(new Date(new java.util.Date().getTime()));
        stu.setS_class("99999");
        U2.addStu(stu);
    }

    //删
    @Test
    public void stuDao3() throws Exception{
        UserDao U3=new UserDaoImpl();
        U3.deleteStu(123);
    }

    //改
    @Test
    public void stuDao4() throws Exception{
        UserDao U4=new UserDaoImpl();

        U4.updateStu(103);
    }
}

创建C3P0数据源

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/day09hw?characterEncoding=utf-8</property>
        <property name="user">root</property>
        <property name="password">root</property>
    </default-config>
</c3p0-config>

创建db.properties

driverName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day09hw
user=root
pwd=root
编写一个程序,实现一个简单的学生信息管理系统。该系统可以记录多个学生的学号、姓名、年龄和性别信息,并且可以进行询、添加、修除学生信息的操作。 具体要求如下: ①定义一个名为 Student 的类,该类包含以下属性:学号、姓名、年龄和性别。其中,姓名和性别为字符串类型,年龄和成绩为整型。 ②定义一个名为 StudentManager 的类,该类用于管理学生信息。该类包含以下方法: void add(Student student):向系统中添加一个学生信息。 void remove(String name):根据学生姓名从系统中除一个学生信息。 void update(int id, String name, int age, String gender):根据学生姓名更新学生信息。 Student find(String name):根据学生姓名询一个学生信息。 List<Student> findAll()询所有学生信息。 ③在 StudentManager 类中使用一个 List 集合来存储学生信息。在添加、除、更新和询学生信息时,需要操作该集合。 ④编写一个测试类Test,测试上述所有功能是否正常工作。 测试用例: // 创建一个学生管理器 StudentManager manager = new StudentManager(); // 添加学生 manager.addStudent(new Student(1001, "张三", 18, "男")); manager.addStudent(new Student(1002, "李四", 19, "女")); manager.addStudent(new Student(1003, "王五", 20, "男")); // 显示所有学生信息 manager.showAllStudents(); // 输出: 所有学生信息如下: 学号:1001,姓名:张三,年龄:18,性别:男 学号:1002,姓名:李四,年龄:19,性别:女 学号:1003,姓名:王五,年龄:20,性别:男 // 根据ID找学生 manager.findStudentById(1002); // 输出: 询结果: 学号:1002,姓名:李四,年龄:19,性别:女 // 修学生信息 manager.updateStudent(1001, "张三丰", 20, "男"); // 除学生 manager.deleteStudent(1003); // 再次显示所有学生信息 manager.showAllStudents(); // 输出: 所有学生信息如下: 学号:1001,姓名:张三丰,年龄:20,性别:男 学号:1002,姓名:李四,年龄:19,性别:女
03-12
package com.parddu.dao; import java.io.IOException; import java.sql.*; import java.util.Properties; /** * 数据库功能类 * @author parddu * @version Sep 29, 2010 9:49:31 AM */ class DButil { private String driver=null; //驱动 private String dbName=null; //数据库名 private String host=null; //主机名 private String point=null; //端口 private String userName=null; //登录帐号 private String userPass=null; //登录密码 private static DButil info = null; private DButil(){} /** * 初始化方法,加载数据库连接信息 * @throws IOException */ private static void init() throws IOException{ Properties prop = new Properties(); prop.load(DButil.class.getResourceAsStream("/db_config.properties")); info = new DButil(); info.driver = prop.getProperty("driver"); info.dbName = prop.getProperty("dbName"); info.host = prop.getProperty("host"); info.point = prop.getProperty("point"); info.userName = prop.getProperty("userName"); info.userPass = prop.getProperty("userPass"); } /** * 得到数据库连接对象 * @return 数据库连接对象 */ static Connection getConn(){ Connection conn=null; if(info == null){ try { init(); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } } if(info!=null){ try { Class.forName(info.driver); String url="jdbc:sqlserver://" + info.host + ":" + info.point + ";databaseName=" + info.dbName; conn=DriverManager.getConnection(url,info.userName,info.userPass); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } else{ throw new RuntimeException("读取数据库配置信息异常!"); } return conn; } /** * 关闭询数据库访问对象 * @param rs 结果集 * @param st 上下文 * @param conn 连接对象 */ static void closeConn(ResultSet rs, Statement st,Connection conn){ try { rs.close(); } catch (Exception e) {} try { st.close(); } catch (Exception e) {} try { conn.close(); } catch (Exception e) {} } /** * 关闭、该数据库访问对象 * @param st 上下文对象 * @param conn 连接对象 */ static void closeConn(Statement st ,Connection conn){ try{ st.close(); conn.close(); }catch(Exception e){} } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值