JDBC数据库相关操作-DButils

DBUtils

2.1 DBUtils执行数据库的增删改

2.1.1DBUtils执行增删改操作_QueryRunner 步骤:

1:注册驱动

2:获取链接

3: 创建QueryRunner类对象

4: 定义SQL语句(增删改)

5: 调用QueryRunner对象的update方法

6: 释放资源

2.1.2DBUtils执行Update操作代码_QueryRunner

Remark:使用QueryRunner类下的Update()方法可以完成对数据库的update/detele/insert操作,不能进行select操作

package QueryRunnerDemo;

import java.sql.Connection;

import java.sql.DriverManager;

import org.apache.commons.dbutils.DbUtils;

import org.apache.commons.dbutils.QueryRunner;

//DBUtils为Apache开发的一个commons-dbutils工具类Jar包

public class QueryRunnerUpdate {

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

QueryUpdate();

}

public static void QueryUpdate() throws Exception {

// 1:注册驱动

Class.forName("com.mysql.jdbc.Driver");

// 2:获取链接

String url="jdbc:mysql://服务器ip:3306/Web08";

String username="root";

String password="密码";

Connection con = DriverManager.getConnection(url, username, password);

// 3:创建QueryRunner类对象

QueryRunner qr = new QueryRunner();

// 4:写删除的SQL语句

String sql = "UPDATE product SET pname=?, price=? WHERE pid=?;";

//由于占位符可能是string、int,double等类型 所以我们可以用object类型通用代替,建立一个object类型的数组来保存占位符

Object[] p = {"Andy",34.9,"p003"};

// 5:调用QueryRunner方法update 注意(QueryRunne类中的update方法返回值为int类型 提示操作成功的行数 所以不能执行select sql语句)

//update(Connection conn, String sql, Object... params) Object... params表示可变参数的Object占位符对象 因为sql语句中可能会有?作为占位符

int row = qr.update(con, sql,p);

//object数组p或者字节写入对应的占位符都是一样的

//int row = qr.update(con, sql,"Andy",34.9,"p003");

System.out.println(row);

//如果row>0则表示update成功

// 6:释放资源

DbUtils.closeQuietly(con);

}

}

2.1.3DBUtils执行Delete操作代码_QueryRunner

package QueryRunnerDemo;

import java.sql.Connection;

import java.sql.DriverManager;

import org.apache.commons.dbutils.DbUtils;

import org.apache.commons.dbutils.QueryRunner;

public class QueryRunnerInsert {

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

InsertSQL("DELETE FROM product WHERE pid='p004';");

}

public static void InsertSQL(String sqls) throws Exception {

//1:注册驱动

Class.forName("com.mysql.jdbc.Driver");

//2:获取链接

String url="jdbc:mysql://服务器ip:3306/Web08";

String username="root";

String password="密码";

Connection con = DriverManager.getConnection(url, username, password);

//3: 创建QueryRunner类对象

QueryRunner qr = new QueryRunner();

//4: 定义SQL语句(增删改)

String sql = sqls;

//5: 调用QueryRunner对象的update方法

int row = qr.update(con, sql);

System.out.println(row);

//6: 释放资源

DbUtils.closeQuietly(con);

}

}


2.2DBUtils---QueryRunner实现SQL查询

原理:调用QueryRunner类中的方法query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)来实现对结果集的处理 其中ResultSetHandler<T>为一个接口 我们可以调用它的实现类方法

注意query的返回值为T 表示泛型 具体返回值会根据结果集处理方式发生变化,例如如果是使用ArrayHandler来处理结果集 query换回的就是Object[]数组

 

下面是接口ResultSetHandler<T>实现类方法:

ArrayHandler

将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

ArrayListHandler

将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

BeanHandler

将结果集中第一条记录封装到一个指定的javaBean中。

BeanListHandler

将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

ColumnListHandler

将结果集中指定的列的字段值,封装到一个List集合中

ScalarHandler

它是用于单数据。例如select count(*) from 表操作。

MapHandler

将结果集第一行封装到Map集合中,Key 列名, Value 该列数据

MapListHandler

将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

 

2.2.1JDBC Utils 返回connection对象

package cn.itcast.jdbcutil;

//自己写的一个JDBCUtils 目的是返回con 数据库链接对象

import java.sql.Connection;

import java.sql.DriverManager;

public class JDBCUtils {

//由于需要返回con对象 所以需要先声明con对象

private static Connection con;

static {

try {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://服务器ip:3306/Web08";

String user = "root";

String password = "密码";

//由于是在静态代码块中执行  所以要在前面先声明这个变量 或者对象为static的 如果前面已经声明这个对象是Connection对象 这里再在con前面加Connection Ecliplse会默认两个con为不同的对象

con = DriverManager.getConnection(url, user, password);

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() {

return con;

}

}

2.2.2ArrayHandler处理QueryRunner对象获得的结果集

需要导入commons.dbutils Jar

package cn.itcast.ArrayHandler;

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.ArrayHandler;

import org.junit.Test;

import cn.itcast.jdbcutil.JDBCUtils;

public class arrayHandlerDemo {

@Test

public void ArrayDemo() {

//1:获得con对象

Connection con = JDBCUtils.getConnection();

//2:创建QueryRunner对象

QueryRunner qr = new QueryRunner();

//3:处理sql语句

String sql = "SELECT * FROM product WHERE pid=?;";

try {

//将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

Object[] arrayHandler = qr.query(con, sql, new ArrayHandler(), "p001");

for (Object object : arrayHandler) {

System.out.print(object);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.2.3ArrayListHandler处理QueryRunner对象获得的结果集

package cn.itcast.ArrayHandler;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.List;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.ArrayHandler;

import org.apache.commons.dbutils.handlers.ArrayListHandler;

import org.junit.Test;

import cn.itcast.jdbcutil.JDBCUtils;

public class arrayHandlerDemo {

@Test

public void ArrayDemo() {

//1:获得con对象

Connection con = JDBCUtils.getConnection();

//2:创建QueryRunner对象

QueryRunner qr = new QueryRunner();

//3:处理sql语句

String sql = "SELECT * FROM product;";

try {

//将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。所以需要先遍历成List集合成Object[]对象 在遍历Object[]

List<Object[]> arrayListHandler = qr.query(con, sql, new ArrayListHandler());

for (Object[] objects : arrayListHandler) {

for (Object object : objects) {

System.out.print(object+"   ");

}

System.out.println();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.2.4BeanHandler处理QueryRunner对象获得的结果集

JavaBean封装对象

package cn.itcast.jdbcutil;

public class BeanUtils {

private String pid;

private String pname;

private String price;

private String category_id;

private String name_cid;

public String getPid() {

return pid;

}

public void setPid(String pid) {

this.pid = pid;

}

public String getPname() {

return pname;

}

public void setPname(String pname) {

this.pname = pname;

}

public String getPrice() {

return price;

}

public void setPrice(String price) {

this.price = price;

}

public String getCategory_id() {

return category_id;

}

public void setCategory_id(String category_id) {

this.category_id = category_id;

}

public String getName_cid() {

return name_cid;

}

public void setName_cid(String name_cid) {

this.name_cid = name_cid;

}

}

BeanHandler结果集方式处理JDBC查询操作代码

package cn.itcast.ArrayHandler;

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.ResultSetHandler;

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

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

import org.junit.Test;

import cn.itcast.jdbcutil.BeanUtils;

import cn.itcast.jdbcutil.JDBCUtils;

public class BeanHandlerDemo {

@Test

public void BeanHandlerDemo() throws Exception {

Connection con = JDBCUtils.getConnection();

QueryRunner qr = new QueryRunner();

String sql = "SELECT * FROM product;";

//将结果集中第一条记录封装到一个指定的javaBean中。 new BeanHandler<BeanUtils>(BeanUtils.class)中 <BeanUtils>表示泛型为BeanUtils对象

BeanUtils beanUtils = qr.query(con, sql, new BeanHandler<BeanUtils>(BeanUtils.class));

System.out.println(beanUtils.getPid()+beanUtils.getPname()+beanUtils.getPrice());

}

}

2.2.5BeanListHandler处理QueryRunner对象获得的结果集

package cn.itcast.ArrayHandler;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.List;

import org.apache.commons.dbutils.QueryRunner;

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

import org.junit.Test;

import cn.itcast.jdbcutil.BeanUtils;

import cn.itcast.jdbcutil.JDBCUtils;

public class BeanListHandlerDemo {

@Test

public void beanlistHandler() throws Exception {

Connection con = JDBCUtils.getConnection();

QueryRunner qr = new QueryRunner();

String sql = "SELECT * FROM product;";

//将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

//qr.query(con, sql, new BeanListHandler<>(BeanUtils.class)); 这一条跟下面一条功能一样

List<BeanUtils> Bean = qr.query(con, sql, new BeanListHandler<BeanUtils>(BeanUtils.class));

for (BeanUtils beanUtils : Bean) {

System.out.println(beanUtils.getPid()+beanUtils.getPname()+beanUtils.getPrice());

}

}

}



加QQ群:764333814(刚成立的新群)免费获取更多资料


猜你喜欢

转载自blog.csdn.net/hujyhfwfh2/article/details/80494217