|NO.Z.00105|——————————|BigDataEnd|——|Java&MySQL.数据库连接池和DBUtils.V14|——|MySQL.v15|QueryRunner类|实现插入/修改/删除操作|

一、QueryRunner 实现增、删、改操作
### --- 核心方法

——> update(Connection conn, String sql, Object... params)

参数 说明
Connection conn  数据库连接对象, 自动模式创建 QueryRun 可以不传 , 手动模式必须传递
String sql 占位符形式的 SQL , 使用 ? 号占位符
Object... param Object 类型的 可变参, 用来设置占位符上的参数
### --- 步骤

——> 1.创建QueryRunner(手动或自动)
——> 2.占位符方式 编写SQL
——> 3.设置占位符参数
——> 4.执行

二、添加
@Test
public void testInsert() throws SQLException {
<span class="hljs-comment">//1.创建 QueryRunner 手动模式创建</span>
<span class="hljs-type">QueryRunner</span> <span class="hljs-variable">qr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">QueryRunner</span>();

<span class="hljs-comment">//2.编写 占位符方式 SQL</span>
<span class="hljs-type">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"insert into employee values(?,?,?,?,?,?)"</span>;

<span class="hljs-comment">//3.设置占位符的参数</span>
Object[] param = {<span class="hljs-literal">null</span>,<span class="hljs-string">"张百万"</span>,<span class="hljs-number">20</span>,<span class="hljs-string">"女"</span>,<span class="hljs-number">10000</span>,<span class="hljs-string">"1990-12-26"</span>};

<span class="hljs-comment">//4.执行 update方法</span>
<span class="hljs-type">Connection</span> <span class="hljs-variable">con</span> <span class="hljs-operator">=</span> DruidUtils.getConnection();
<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> qr.update(con, sql, param);

<span class="hljs-comment">//5.释放资源</span>
DbUtils.closeQuietly(con);

}

三、修改
// 修改操作 修改姓名为张百万的员工工资
@Test
public void testUpdate() throws SQLException {
<span class="hljs-comment">//1.创建QueryRunner对象 自动模式,传入数据库连接池</span>
<span class="hljs-type">QueryRunner</span> <span class="hljs-variable">qr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">QueryRunner</span>(DruidUtils.getDataSource());

<span class="hljs-comment">//2.编写SQL</span>
<span class="hljs-type">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"update employee set salary = ? where ename = ?"</span>;

<span class="hljs-comment">//3.设置占位符参数</span>
Object[] param = {<span class="hljs-number">0</span>,<span class="hljs-string">"张百万"</span>};

<span class="hljs-comment">//4.执行update, 不需要传入连接对象</span>
qr.update(sql,param);

}

四、删除
// 删除操作 删除 id 为 1 的数据
@Test
public void testDelete() throws SQLException {
        QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());
        String sql = "delete from employee where eid = ?";
        // 只有一个参数, 不需要创建数组
        qr.update(sql,1);
   }
五 、sql 语句
package com.yanqi.testDBUtils;

import com.yanqi.utils.DbcpUtils;
import com.yanqi.utils.DruidUtils;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;

/*

  • 使用 QueryRunner 对象 完成增删改

  •   update(Connection con,String sql,Object... param) 方法
    
  • */
    public class DBUtilsDemo02 {

    // 插入操作
    @Test
    public void testInsert() throws SQLException {

     <span class="hljs-comment">//1.创建 QueryRunner 手动模式创建</span>
     <span class="hljs-type">QueryRunner</span> <span class="hljs-variable">qr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">QueryRunner</span>();
    
     <span class="hljs-comment">//2.编写 占位符方式 SQL</span>
     <span class="hljs-type">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"insert into employee values(?,?,?,?,?,?)"</span>;
    
     <span class="hljs-comment">//3.设置占位符的参数</span>
     Object[] param = {<span class="hljs-literal">null</span>,<span class="hljs-string">"张百万"</span>,<span class="hljs-number">20</span>,<span class="hljs-string">"女"</span>,<span class="hljs-number">10000</span>,<span class="hljs-string">"1990-12-26"</span>};
    
     <span class="hljs-comment">//4.执行 update方法</span>
     <span class="hljs-type">Connection</span> <span class="hljs-variable">con</span> <span class="hljs-operator">=</span> DruidUtils.getConnection();
     <span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> qr.update(con, sql, param);
    
     <span class="hljs-comment">//5.释放资源</span>
     DbUtils.closeQuietly(con);
    

    }

    // 修改操作 修改姓名为 张百万的员工的工资为 15000
    @Test
    public void testUpdate() throws SQLException {

     <span class="hljs-comment">//1.创建 核心类 自动模式 需要传递 数据库连接池对象</span>
     <span class="hljs-type">QueryRunner</span> <span class="hljs-variable">qr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">QueryRunner</span>(DruidUtils.getDataSource());
    
     <span class="hljs-comment">//2.编写SQl</span>
     <span class="hljs-type">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"update employee set salary = ? where ename = ?"</span>;
    
     <span class="hljs-comment">//3.设置占位符的参数</span>
     Object[] param = {<span class="hljs-number">15000</span>,<span class="hljs-string">"张百万"</span>};
    
     <span class="hljs-comment">//4.执行修改操作 自动模式不需要传入connection对象</span>
     qr.update(sql,param);
    

    }

    // 删除操作 删除 id 为 1 的 记录
    @Test
    public void testDelete() throws SQLException {

     <span class="hljs-type">QueryRunner</span> <span class="hljs-variable">qr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">QueryRunner</span>(DruidUtils.getDataSource());
    
     <span class="hljs-type">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"delete from employee where eid = ?"</span>;
    
     <span class="hljs-comment">//如果只有一个参数的话 不需要创建数组</span>
     qr.update(sql,<span class="hljs-number">1</span>);
    

    }

}

六、打印输出
D:\JAVA\jdk-11.0.2\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=58639:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar;D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\plugins\junit\lib\junit5-rt.jar;D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\plugins\junit\lib\junit-rt.jar;E:\NO.Z.10000——javaproject\NO.H.00002.mysql\mysql\out\production\mysql.jdbc_task06;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\dom4j-1.6.1.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\druid-1.0.9.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\c3p0-0.9.5.2.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\commons-dbcp-1.4.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\jaxen-1.1-beta-6.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\commons-pool-1.5.6.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\commons-dbutils-1.6.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\mchange-commons-java-0.2.12.jar;F:\NO.Z.02000——soft——IT. 实验 \20210801——Hadoop\20210801.2——Hadoop——第二阶段——预科班 \ 预科班第二阶段模块一\05 任务五 (JDBC)\03_ 软件 \myJar\mysql-connector-java-5.1.37-bin.jar;C:\Users\Administrator\.m2\repository\org\testng\testng\6.14.3\testng-6.14.3.jar;C:\Users\Administrator\.m2\repository\com\beust\jcommander\1.72\jcommander-1.72.jar;C:\Users\Administrator\.m2\repository\org\apache-extras\beanshell\bsh\2.0b6\bsh-2.0b6.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter\5.4.2\junit-jupiter-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.4.2\junit-jupiter-api-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\apiguardian\apiguardian-api\1.0.0\apiguardian-api-1.0.0.jar;C:\Users\Administrator\.m2\repository\org\opentest4j\opentest4j\1.1.1\opentest4j-1.1.1.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-commons\1.4.2\junit-platform-commons-1.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.4.2\junit-jupiter-params-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.4.2\junit-jupiter-engine-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-engine\1.4.2\junit-platform-engine-1.4.2.jar;C:\Users\Administrator\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.yanqi.testDBUtils.DBUtilsDemo02
805, 2021 10:26:57 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited

Process finished with exit code 0


 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor