JDBC学习笔记第十篇

封装非DQL语句 DaseDao类配合JdbcUtilsV2,使用 BaseDao类完成了 4.创建statement 5.占位符赋值6.SQL语句7.结果解析  JdbcUtilsV2类完成1.注册驱动  2.获取连接 8.回收资源,只需要在外3.编写SQL语句即可。
package com.shayiheng.api.utils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import java.util.Objects;

/**
 * @Author Tom
 * @Date 2023/12/23 12:48
 * @Description:封装dao层数据库重复代码
 * TODO:
 *      封装两个方法 一个简化非DQL
 *                  一个简化DQL
 */
public abstract  class BaseDao {
    /**
     * 封装简化非DQL语句
     * @param sql 带占位符SQL语句
     * @param params 占位符的值 传入占位符的值必须等于SQL语句的?位置
     * @return
     */
    public int executeUpdate(String sql, Object... params) throws SQLException {
        //获取连接
        Connection connection = JdbcUtilsV2.getConnection();

        //4.创建预编译preparedStatement,并且传入SQL语句结果
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //5.占位符赋值
        //可变参数可以当数组一样使用
        for (int i = 1; i <= params.length; i++) {
            preparedStatement.setObject(i,params[i-1]);
        }
        //6.发送SQL语句
        //DML类型
        int rows=preparedStatement.executeUpdate();

        preparedStatement.close();
        //如果为true表示没有开启
        if (connection.getAutoCommit()){
            JdbcUtilsV2.freeConnection();
        }
        //如果开启就不管,让业务层自己关闭
        return  rows;
    }
}
package com.shayiheng.api.utils;

import org.junit.Test;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PSCURDPart extends  BaseDao {

    //导入juint的测试包
    @Test
    public void testInsert() throws ClassNotFoundException, SQLException {
        /**
         * t_user插入一条数据!
         * account test
         * password test
         * nickname 二狗子
         */
        //3.编写SQL语句结果,动态的部分使用?代替
        String sql = "INSERT INTO t_user(account, PASSWORD,nickname)VALUES(?,?,?);";
        int row= executeUpdate(sql,"test123","21700411","tom");
        System.out.println("row=" + row);

    }
    @Test
    public void testUpdate() throws SQLException, ClassNotFoundException {
        String sql = "UPDATE t_user SET account=?,PASSWORD=?,nickname=?WHERE id=?;";
        int row= executeUpdate(sql,"admins","3333","ergouzi",2 );
        System.out.println(("row=" + row));
    }


    @Test
    public void testDelete() throws SQLException, ClassNotFoundException {
        String sql = "DELETE FROM t_user WHERE id=?;";
        int row = executeUpdate(sql,"80021");
        System.out.println(("row=" + row));
    }
}
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值