DBUtils是java编程中数据库操作的使用工具,封装了对JDBC的操作,简化了JDBC操作,减少代码的书写量
使用时导入架包
1.QueryRunner中提供对sql语句操作的API(也是最主要的)
2.ResultSetHandler接口,用于定义select操作后,怎么封装结果集
3.DbUtil类,它是一个工具类,定义了关闭资源与事务处理的方法
红色的是要熟练掌握
closeQuietly(Connetcion conn)关闭连接,如果有异常try后不抛
commitAndCloseQuietly(Connection conn)提交并关闭连接
rollbackAndCloseQuietly(Connection conn)回滚并关闭连接
这里C3P0Utils.getDataSource()是自己书写的获取DataSource的工具类
package cn.itheima.jdbc.test;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import cn.itheima.jdbc.utils.C3P0Utils;
/**
* 测试DBUtils工具类的增删改操作
*
* @author Never Say Never
* @date 2016年7月31日
* @version V1.0
*/
public class TestDBUtils1 {
/**
* 添加所有用户方法
*/
@Test
public void testAddUser() {
try {
// 1.创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写SQL语句
String sql = "insert into tbl_user values(null,?,?)";
// 3.为站位符设置值
Object[] params = { "余淮", "耿耿" };
// 4.执行添加操作
int rows = qr.update(sql, params);
if (rows > 0) {
System.out.println("添加成功!");
} else {
System.out.println("添加失败!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 根据id修改用户方法
*
*/
@Test
public void testUpdateUserById() {
try {
// 1.创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写SQL语句
String sql = "update tbl_user set upassword=? where uid=?";
// 3.为站位符设置值
Object[] params = { "xxx", 21 };
// 4.执行添加操作
int rows = qr.update(sql, params);
if (rows > 0) {
System.out.println("修改成功!");
} else {
System.out.println("修改失败!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 根据id删除用户方法
*/
@Test
public void testDeleteUserById() {
try {
// 1.创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写SQL语句
String sql = "delete from tbl_user where uid=?";
// 3.为站位符设置值
Object[] params = {19};
// 4.执行添加操作
int rows = qr.update(sql, params);
if (rows > 0) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package cn.itheima.jdbc.test;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import cn.itheima.domain.User;
import cn.itheima.jdbc.utils.C3P0Utils;
/**
* 测试DBUtils查询操作
*
* @author Never Say Never
* @date 2016年7月31日
* @version V1.0
*/
public class TestDBUtils2 {
/*
* 查询所有用户方法
*/
@Test
public void testQueryAll() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = "select * from tbl_user";
// 3.执行查询操作
List users = qr.query(sql, new BeanListHandler(User.class));
// 4.对结果集集合进行遍历
for (User user : users) {
System.out.println(user.getUname() + " : " + user.getUpassword());
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 根据id查询用户方法
*/
@Test
public void testQueryUserById() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = "select * from tbl_user where uid=?";
//3.为占位符设置值
Object[] params = {21};
// 4.执行查询操作
User user = qr.query(sql, new BeanHandler(User.class), params);
System.out.println(user.getUname() + " : " + user.getUpassword());
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 根据所有用户的总个数
*/
@Test
public void testQueryCount() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = "select count(*) from tbl_user";
// 4.执行查询操作
Long count = (Long) qr.query(sql, new ScalarHandler());
System.out.println(count);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 查询所有用户方法
*/
@Test
public void testQueryAll1() {
try {
// 1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql语句
String sql = "select * from tbl_user";
// 3.执行查询操作
List
这里的话可以使用连接池,这里的话是没有使用连接池的
package cn.dbc;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BaseDao
{
public Connection getConenction()
{
Connection conn=null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","pl","123456");
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public void closeConn(Connection conn,PreparedStatement pstmt,ResultSet rs)
{
try
{
if(rs!=null)
{
rs.close();
}
if(pstmt!=null)
{
pstmt.close();
}
if(conn!=null)
{
conn.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
//这里是进行增删改的集成操作
public boolean update(String sql,List
package com.gdut;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//mysql 通用连接数据库的模板
public class MysqlTest {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rst = null;
String sql = "select * from dep where id = ?";
Listlp = new ArrayList();
lp.add(1);
List dep = chaxu(conn, pstm, rst, sql, lp, Dep.class);
for(Dep dep1:dep)
{
System.out.println(dep1.getId()+" "+dep1.getName()+" "+dep1.getNum());
}
// lp.add(6);
// lp.add("f");
// lp.add(6);
// zsg(conn, pstm, rst, sql, lp);
}
public static void zsg(Connection conn,PreparedStatement pstm,ResultSet rst,String sql,Listlp)
{
try {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//创建连接
conn = DriverManager.getConnection("jdbc:mysql://101.200.132.173:3306/erp", "root", "123456");
//sql语句
pstm = conn.prepareStatement(sql);
if(lp.size()>0)
{
for(int i = 0;iList chaxu(Connection conn,PreparedStatement pstm,ResultSet rst,String sql,Listlp,Class clas)
{
Listlist = new ArrayList();
try {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//创建连接
conn = DriverManager.getConnection("jdbc:mysql://101.200.132.173:3306/erp", "root", "123456");
//sql语句
pstm = conn.prepareStatement(sql);
if(lp.size()>0)
{
for(int i = 0;i