自定义一个JdbcTemplate(增删改数据库中表记录)
需求:
- 自定义一个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(增删改数据库中表记录)的更多相关文章
- JDBC增删改数据库的操作
JDBC入门及简单增删改数据库的操作 一.JDBC的引入 1.JDBC的概念 JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于 ...
- Hibernate4 拦截器(Interceptor) 实现实体类增删改的日志记录
转自:https://blog.csdn.net/he90227/article/details/44783099 开发应用程序的过程中,经常会对一些比较重要的数据修改都需要写日志.在实际工作的工程中 ...
- 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Dri ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
Jerry之前的文章30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 发布之后,有朋友问我,"没错, 我是在你的文章里看到了Fiori应用的 ...
- 基于Entity Framework的自定义分页,增删改的通用实现
简介 之前写个一个基于Dapper的分页实现,现在再来写一个基于Entity Framework的分页实现,以及增删改的通用实现. 代码 还是先上代码:https://github.com/jinwe ...
- MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查
上一篇文章(https://www.cnblogs.com/meowv/p/12913676.html)我们用Code-First的方式创建了博客所需的实体类,生成了数据库表,完成了对EF Core的 ...
- JdbcTemplate增删改查
1.使用JdbcTemplate的execute()方法执行SQL语句 jdbcTemplate.execute("CREATE TABLE USER (user_id integer, n ...
- java连接mysql数据库增删改查操作记录
1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...
随机推荐
- Java开发网络安全常见问题
Java开发网络安全常见问题 等闲识得东风面,万紫千红总是春 1.敏感信息明文传输 用户敏感信息如手机号.银行卡号.验证码等涉及个人隐私的敏感信息不通过任何加密直接明文传输. 如下图中小红书APP 的 ...
- @Transactional事务回滚异常:Transaction rolled back because it has been marked as rollback-only
问题描述 事务设置手动回滚:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly() 代码需要返回比较友好的提示,但t ...
- [LeetCode]螺旋矩阵
题目 代码 class Solution { public: vector<int> spiralOrder(vector<vector<int>>& ma ...
- npm 启动项目报错 Cannot find module '\@babel\compat-data\data\corejs3-shipped-proposals',解决办法
最近升级了系统的node ,webpack 等等,然后今天打开项目,突然启动不起来了~~ 报错信息如下: Module build failed (from ./node_modules/babel- ...
- [Codeforces Round #794 (Div. 2)] D. Linguistics
我是什么东西艹艹艹 <我离正解只差个sort> 首先,观察字符串,可以发现:若存在形似\(AA--BB\)或\(BB--AA\)等有两个相同的字符挨在一起的情况,则我们在它们中间放一块隔板 ...
- BUG日记之-----Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway.
在使用swagger进行测试的时候调用弹窗 解决办法: 在启动类添加@EnableSwagger2注解
- 华为云服务器8000通道映射到本地,本地浏览器访问jupyter
首先你得有个华为云服务器(这不是废话) 第二你得开放它的端口(重点) 第三打开本地cmd 输入ssh -L [客户端IP或省略]:[客户端端口]:[服务器IP]:[服务器端口] [登陆服务器的用户名] ...
- JUC并发编程
什么是JUC java.util.concurrent* public class Test1 { public static void main(String[] args) { //获取处理器核数 ...
- JavaScript: symbol 和 string key 取值用法
'' 做 key 可以被 . 或者 [] 运算符取出 [""] 做 key 同样可以被 . 或者 [] 运算符取出 symbol 做 key 只能被 . 取出 [symbol] 做 ...
- 基于Kali Linux的渗透测试工具-Discover脚本
简介 这篇文章主要介绍了基于Kali Linux的渗透测试工具-Discover脚本以及相关的经验技巧,文章约5629字,浏览量510,点赞数9,值得参考! 如果你正在使用Kali Linux,那么 ...