需求:

  • 自定义一个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 }

最新文章

  1. ORACLE表空间管理维护
  2. SQL Server 2012 The report server cannot open a connection to the report server database
  3. VECTOR COMPUTATION
  4. Atitit Server Side Include &#160;ssi服务端包含规范&#160;csi &#160;esi
  5. 针对CMS中的tag标签理解
  6. js为元素添加onclick事件
  7. C语言第四节数据类型、常量、变量
  8. ActivePython2.7 +Firefly1.2.2+WIN7服务器搭建过程(已通过)
  9. shell用if
  10. 谷歌地图实现车辆轨迹移动播放(google map api)
  11. 笔记:java并发编程实践1
  12. Kinect研究
  13. 关于Canvas Rect Transform 设置问题?
  14. 小K的H5之旅-实战篇(一)
  15. 使用 VSCode 编写 .NET Core 项目之初体验
  16. c/c++ 图的创建(二维数组法)
  17. 从浏览器中输入URL到页面加载的发生了什么-转载
  18. Spark+Hadoop+IDE环境搭建
  19. linux下字典生成工具-crunch与rtgen
  20. rabbitmq High Availability

热门文章

  1. 德摩根定律的证明 De Morgan&#39;s law
  2. java反射基础知识整理
  3. Redis 中ZSET数据类型命令使用及对应场景总结
  4. C#应用程序配置文件(XML序列化) - 开源研究系列文章
  5. DVWA靶场实战(一)——Brute Force
  6. doc指令
  7. 视图,触发器,存储过程,流程控制等MySQL小知识点
  8. Java自动装箱与拆箱
  9. java入门与进阶 P-2.7+P-3.1
  10. Rust Rand生成随机数