dbutil操作数据库工具类

步骤

  1. 导入jar包

c3p0-0.9.1.2.jar         commons-dbutils-1.6.jar         mysql-connector-java-5.1.12-bin.jar

  1. 把c3p0配置文件放到src目录下(src下一级目录,否则出错),

c3p0-config.xml  (连接数据库的驱动,url,名字,密码,,,,等)

  1. 创建连接池

ComboPooledDataSource  ds = new ComboPooledDataSource();

  1. 拿到执行sql的关键对象QueryRunner

QueryRunner  qr = new QueryRunner(ds);

  1. 写sql语句

增:String  sql=” insert into user(name,age) values(?,?)”;

删:String  sql="delete from user where id="+u.getId();

改:String  sql="update user set name=?,age=? where id=?";

查:

查一个:String  sql="select * from user where id=?";

查一批:String sql="select * from user";

  1. 将sql语句放入Query对象,调用相应方法增删改查

不要疑惑,增加、修改、删除都可以调用update方法,内部会通过判断有无id而具体实行增加还是修改,只有sql时删除。

增:int  num = qr.update(sql, u.getName(),u.getAge());

改:int  num = qr.update(sql, u.getName(),u.getAge(),u.getId());

删:int  num=qr.update(sql);

查:

查一个

User  user = qr.query(sql, new BeanHandler<User>(User.class), id);

查一批

List<User>  users = qr.query(sql, new BeanListHandler<User>(User.class));

注:增删改都可用Query对象的update方法,查询的同时将查到的数据封装成对应的对象或者集合。

示例代码:

c3p0-config.xml

<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost/test</property>
<property name="user">root</property>
<property name="password"></property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
</default-config>
</c3p0-config>

DbUtil.java

package util;

import org.apache.commons.dbutils.QueryRunner;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DbUtil {
//构造数据源
private static ComboPooledDataSource ds=new ComboPooledDataSource();

public static QueryRunner getRuertyRunner(){
//拿到操作数据库的关键对象QueryRunner,把数据源放进去
QueryRunner qr = new QueryRunner(ds);
return qr;
}
}

User.java

package entity;

public class User {

private int id;
private int age;
private String name;

public User() {
super();
}
public User(int id, int age, String name) {
super();
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

UserDao.java

package dao;

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

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import util.DbUtil;
import entity.User;

public class UserDao {

/*public int add(User u){
Connection conn = JdbcUtil.getConnection();
String sql="insert into user(name,age) values(?,?)";
PreparedStatement ps=null;
int num=0;
try {
ps = conn.prepareStatement(sql);
ps.setObject(1, u.getName());
ps.setObject(2, u.getAge());
num=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return num;
}*/

//dbutil
QueryRunner qr = DbUtil.getRuertyRunner();
public int add(User u){
String sql="insert into user(name,age) values(?,?)";
int num=0;
try {
num = qr.update(sql, u.getName(),u.getAge());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}
public int delete(User u){
String sql="delete from user where id="+u.getId();
int num=0;
try {
num = qr.update(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}
public int update(User u){
String sql="update user set name=?,age=? where id=?";
int num =0;
try {
num= qr.update(sql, u.getName(),u.getAge(),u.getId());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}

public User selectOne(int id){
String sql="select * from user where id=?";
User user=null;
try {
user = qr.query(sql, new BeanHandler<User>(User.class), id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user;
}
public List<User> selectAll(){
String sql="select * from user";
List<User> users=null;
try {
users = qr.query(sql, new BeanListHandler<User>(User.class));
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
}

 

通过dbutil操作数据库的更多相关文章

  1. Java数据库连接——JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  2. 封装JDBC操作数据库的方法

    自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...

  3. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  4. jdbc操作数据库(详细)

    JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言.利用JDBC可以将JAVA代码连接到oracle.DB2.SQL ...

  5. Java-jdbc操作数据库

    如果需要访问数据库,首先要加载数据库驱动,数据库驱动只需在第一次访问数据库时加载一次.然后在每次访问数据库时创建一个Connection实例,获取数据连接,这样就可以执行操作数据库的SQL语句.最后在 ...

  6. python高级之操作数据库

    python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及安装 在python2中连接数据库 ...

  7. greenDao:操作数据库的开源框架

    greenDAO: Android ORM for your SQLite database 1. greenDao库获取 英文标题借鉴的是greendrobot官网介绍greenDao时给出的Tit ...

  8. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  9. greendao操作数据库的使用方法

    第一步:把greendao-1.3.0-beta-1,greendao-generator-1.3.1两个jar包加载到工程的lib的文件夹中,一定要右键点击Add As Library后才能使用. ...

随机推荐

  1. 【洛谷P1896】互不侵犯

    题目大意:给定 N*N 的棋盘,一共放 K 个国王,一共有多少种方法. 题解: i&i<<1 判断是否每个 1 的位置之间都有 0. i&j<<1 判断 i 中 ...

  2. Vue+koa2开发一款全栈小程序(4.Koa入门)

    1.Koa是什么? 基于nodejs平台的下一代web开发框架 1.Express原班人马打造,更精简 2.Async+await处理异步 3.洋葱圈型的中间件机制 新建一个koa项目 1.打开cmd ...

  3. PKUWC2019滚粗记

    真的不想说些什么了,还是自己太菜了,水平低啊.深深感受到NOIP2017以后的那种绝望,这最好的签约清北的机会,就这样白白错过了.本以为自己的应该有NOIAg的实力,运气好是前120吧,没想到自己还是 ...

  4. Java programming problems

    1.使用循环把26个字母按字典顺序存入数组,在不使用另外数组的情况下将其逆序存放,在根据处理后的字符数组创建一个字符串并输出 public static void main(String[] args ...

  5. 详解python的垃圾回收机制

    python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式 ...

  6. C和 C++的特点

    C语言进化到C++ 的过程,是一个障眼法的发展过程.1. bool型变量:1个字节变量(和char一样大小),缺省赋值为true(1),false(0)2. 引用型变量:让新申请的变量挂在原有同类型的 ...

  7. POJ 2976 Dropping tests(01分数规划)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:17069   Accepted: 5925 De ...

  8. Luogu P3157 [CQOI2011]动态逆序对

    题目链接 \(Click\) \(Here\) 这个题有点卡常数..我的常数比较大所以是吸着氧气跑过去的... 题意:计算对于序列中每个位置\(p\),\([1,p-1]\)区间内比它大的数的个数,和 ...

  9. window下域名解析系统DNS诊断命令nslookup详解

    Ping指令我们很熟悉了,它是一个检查网络状况的命令,在输入的参数是域名的情况下会通过DNS进行查询,但只能查询A记录和CNAME(别名)记录,还会返回域名是否存在,其他的信息都是没有的.如果你需要对 ...

  10. Storm 使用手册

    一.Storm相关术语: Nimbus: Storm集群主节点,负责资源的分配和任务的调度 Supervisor:Storm集群工作节点,接受Nimbus分配的任务,管理Worker Worker:S ...