需求:

  • 自定义一个JdbcTemplate模板,实现增删改数据库中表记录的功能

     1 package demo03;
    2
    3 import utils.JDBC_DBCP_Utils;
    4
    5 import javax.sql.DataSource;
    6 import java.sql.Connection;
    7 import java.sql.ParameterMetaData;
    8 import java.sql.PreparedStatement;
    9 import java.sql.SQLException;
    10
    11 public class MyJDBCTemplate {
    12 //1. 需要传入数据源
    13 private DataSource dataSource;
    14
    15 //构造方法
    16 public MyJDBCTemplate(DataSource dataSource) {
    17 this.dataSource = dataSource;
    18 }
    19
    20 /**
    21 * 封装了JDBC操作数据库的步骤+元数据, 释放资源(使用者不需要关注释放资源了)
    22 * 进行增,删,修改
    23 *
    24 * @param sql sql语句
    25 * @param params 参数
    26 * @return Ctrl+Alt+T
    27 */
    28 public int update(String sql, Object... params) {
    29 Connection connection = null;
    30 PreparedStatement preparedStatement = null;
    31 try {
    32 //0. 非空判断
    33 if (dataSource == null) throw new RuntimeException("dataSource must not null...");
    34
    35 if (sql == null) throw new RuntimeException("sql must not null...");
    36
    37 //1. 从dataSource 获得连接对象
    38 connection = dataSource.getConnection();
    39 //2. 创建预编译的sql语句对象 insert into user values (?,?,?,?)
    40 preparedStatement = connection.prepareStatement(sql);
    41
    42 //3. 获得参数的元数据对象
    43 ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
    44 //4. 获得参数的个数
    45 int parameterCount = parameterMetaData.getParameterCount();
    46
    47 //5. 给每一个?赋值
    48 for (int i = 0; i < parameterCount; i++) {
    49 preparedStatement.setObject(i + 1, params[i]);
    50 }
    51
    52 //6. 执行
    53 int i = preparedStatement.executeUpdate();
    54 return i;
    55 } catch (SQLException e) {
    56 e.printStackTrace();
    57 } finally {
    58 //释放资源
    59 JDBC_DBCP_Utils.release(null, preparedStatement, connection);
    60 }
    61 return -1;
    62 }
    63 }

自定义一个JdbcTemplate(增删改数据库中表记录)的更多相关文章

  1. JDBC增删改数据库的操作

    JDBC入门及简单增删改数据库的操作 一.JDBC的引入 1.JDBC的概念 JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于 ...

  2. Hibernate4 拦截器(Interceptor) 实现实体类增删改的日志记录

    转自:https://blog.csdn.net/he90227/article/details/44783099 开发应用程序的过程中,经常会对一些比较重要的数据修改都需要写日志.在实际工作的工程中 ...

  3. 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用

    2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Dri ...

  4. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

  5. 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用

    Jerry之前的文章30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 发布之后,有朋友问我,"没错, 我是在你的文章里看到了Fiori应用的 ...

  6. 基于Entity Framework的自定义分页,增删改的通用实现

    简介 之前写个一个基于Dapper的分页实现,现在再来写一个基于Entity Framework的分页实现,以及增删改的通用实现. 代码 还是先上代码:https://github.com/jinwe ...

  7. MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查

    上一篇文章(https://www.cnblogs.com/meowv/p/12913676.html)我们用Code-First的方式创建了博客所需的实体类,生成了数据库表,完成了对EF Core的 ...

  9. JdbcTemplate增删改查

    1.使用JdbcTemplate的execute()方法执行SQL语句 jdbcTemplate.execute("CREATE TABLE USER (user_id integer, n ...

  10. java连接mysql数据库增删改查操作记录

    1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...

随机推荐

  1. Mariadb对数据库和表的操作

    登录mariadb: 路径切换到bin下 mysql -u root -p 然后会提示输密码 新建数据库: create database demo; 其中demo为数据库名字 新建表 create ...

  2. HBase详解(01) - Hbase简介

    HBase简介 定义:HBase是一种分布式.可扩展.支持海量数据存储的NoSQL数据库. 数据模型:逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列.但从HBase的底 ...

  3. LeetCode HOT 100:验证二叉搜索树(从左右子树获取信息进行推导)

    题目:98. 验证二叉搜索树 题目描述: 给你一个二叉树,让你判断该二叉树是否是二叉搜索树.什么是二叉搜索树呢?就是某一个节点的左子树上的所有节点的值都小于当前节点,右子树上的所有节点值都大于当前节点 ...

  4. Raft一致性共识算法论文学习

    论文地址:https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf 看完raft共识算法,脑袋非常懵,所以写一篇学习笔记,记录一下. raft ...

  5. 多项式 I:拉格朗日插值与快速傅里叶变换

    1. 复数和单位根 前置知识:弧度制,三角函数. 1.1 复数的引入 跳出实数域 \(\mathbb R\),我们定义 \(i ^ 2 = -1\),即 \(i = \sqrt {-1}\),并在此基 ...

  6. js鼠标轨迹特效

    今天无意中访问到了开源社区 (apiopen.top)的主界面,发现鼠标跟随的特效不错(残留轨迹),弄下来玩玩 上代码 整合后只需要两部分,导入JS依赖后,在html 添加 id 为 mouseCan ...

  7. 表单标签补充及css层叠样式

    表单标签补充及css层叠样式 一.表单知识点补充 1.获取用户输入的标签两大重要属性 name属性:类似于字典的键 value属性:类似于与字典的值 # form表单朝后端发送数据的时候,标签必须得有 ...

  8. idea正则替换

    将非 (股权)的替换成 股权

  9. TCP通信的概述(上)-TCP通信的概述(下)

    TCP通信的概述(上) TCP通信的概述(下)

  10. io流概述-一切皆为字节

    io流概述 什么是io 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那么数据都是在哪些设 ...