技术总是在不断更新变化的,尤其是在IT编程领域。

有时候我们理所当然的用着现成的框架,以至于用的太过于顺手,更要时不时的骂一句:

什么垃圾框架?我家狗都不会用!

如果那些被拍死在沙滩的“前浪”听到这话,怕是要顶开棺材板给你点个赞。

为什么?

因为太安逸了,安逸到一出生就开着拖拉机耕地,还嫌拖拉机费油。

今天来看看不费油的,费人。


现在MyBatis框架用的比较熟练了,但是有时候不明白原理,也不知道MyBatis具体做了什么工作,于是就把JDBC翻出来看一下,忆苦思甜。

什么是 JDBC

我们是学 java 的,我们要操作数据库,我们怎么办?

聪明的 Sun 公司想了个办法,我们定义一套 java 接口,一套标准的操作数据库的 API,你们各家数据库公司都按我的来,不按我来的都给我滚。

于是就有了 JDBC,JDBC 就是这套接口的名字,全称叫 Java DataBase Connectivity(Java 数据库连接)。

我们也就应该知道,你光有接口是操作不了数据库的,所以你要用 MySQL 数据库,就得装上 MySQL 驱动。

用谁家的数据库,就装谁家的数据库驱动。

比如:

  1. <dependency>
  2.   <groupId>mysql</groupId>
  3.   <artifactId>mysql-connector-java</artifactId>
  4.   <version>8.0.28</version>
  5. </dependency>

JDBC 怎么用

有了接口实现,也就是驱动,那我们就可以用了呀?干嘛?操作数据库!


  1. public class JDBCDemo {
  2.     public static void main(String[] args) throws ClassNotFoundException, SQLException {
  3.         // 1.注册驱动
  4.         Class.forName("com.mysql.cj.jdbc.Driver");
  5.         // 2.获取连接 Connection可管理事务
  6.         String url = "jdbc:mysql://127.0.0.1:3306/test";
  7.         String username = "root";
  8.         String password = "root";
  9.         Connection conn = DriverManager.getConnection(url, username, password);
  10.         // 3.定义sql
  11.         String sql = "update person set name = '张三' where id = 1";
  12.         // 4.获取执行sql的对象Statement
  13.         // 普通执行SQL对象 Statement createStatement() throws SQLException;
  14.         // 预编译SQL的执行SQL对象:防止SQL注入 
  15.         // PreparedStatement prepareStatement(String sql)throws SQLException;
  16.         Statement stmt = conn.createStatement();
  17.         // 5.执行sql Statement有各种执行sql的方法,可查看源码,注意返回的ResultSet
  18.         int count = stmt.executeUpdate(sql);
  19.         // 6.处理结果
  20.         System.out.println(count);
  21.         // 7.释放资源
  22.         stmt.close();
  23.         conn.close();
  24.     }
  25. }

从以上 JDBC 的实际开发中可以看到2个明显的缺点:

1.硬编码

2.操作繁琐

那么对此 MyBatis 做了什么?

1.硬编码配置到配置文件

2.操作繁琐的地方自动完成

除此以外,MyBatis 还做了大量微小的工作,这里不再列举。


谨以此文纪念JDBC,希望你永远不要醒来。


往期推荐:

● 师爷,翻译翻译什么叫AOP

终于搞懂动态代理了!

● 学会@ConfigurationProperties月薪过三千

● 0.o?让我看看怎么个事儿之SpringBoot自动配置

● 不是银趴~是@Import!

● Java反射,看完就会用

纪念JDBC的更多相关文章

  1. 初涉JSP+JDBC 基于SQL2008的登陆验证程序

    简单的以代码的形式纪念一下,因为现在还没有解决SQL2008驱动的问题,并且有好多东西要学,所以日后会有更新~ 所安装的软件有:SQL2008,eclipse,tomcat,JDK,涉及环境配置.等等 ...

  2. Java数据库连接技术——JDBC

    大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...

  3. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

  4. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...

  5. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  6. JDBC增加删除修改

    一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...

  7. JDBC简介

    jdbc连接数据库的四个对象 DriverManager  驱动类   DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...

  8. JDBC Tutorials: Commit or Rollback transaction in finally block

    http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...

  9. FineReport如何用JDBC连接阿里云ADS数据库

    在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...

  10. JDBC基础

    今天看了看JDBC(Java DataBase Connectivity)总结一下 关于JDBC 加载JDBC驱动 建立数据库连接 创建一个Statement或者PreparedStatement 获 ...

随机推荐

  1. C# NLog 配置

    首先用NuGet安装NLog依赖DLL NLog NLog.Config NLog.Schema NLog配置文件NLog.config: <?xml version="1.0&quo ...

  2. JSP | 指令详解以及实例

    原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处. 本篇学习自:C语言中文网,部分内容转载仅供学习使用. 前文 JSP 中有一个关键的知识点:指令; ...

  3. 秒杀活动java怎么实现

    秒杀与其他业务最大的区别在于:秒杀的瞬间: (1)系统的并发量会非常的大 (2)并发量大的同时,网络的流量也会瞬间变大. 一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是 ...

  4. sipp3.6带媒体测试方案

    概述 SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多. 本文档介绍sipp工具如何带媒体测试,并介绍如何制作可用的媒体文件(G729和PCMA). 环境 centos7.9 fre ...

  5. pycharm解决test_开头文件报错的问题

    一.问题描述 运行时报了如下错误:

  6. IBM jca 工具的学习与整理

    IBM jca 工具的学习与整理 背景 发现自己最早看到IBM这个工具的时间是 2022年9月份. 但是一直没有进行过仔细的学习与论证. 本周出现了一个问题. 虽然通过gclog明显看出来是一个oom ...

  7. Windows平台的prometheus和Grafana的学习与使用

    Windows平台的prometheus和Grafana的学习与使用 背景 最近没有了linux机器 突然想捯饬一下Windows平台的监控与使用 所以总结一一下. 第一步下载 https://pro ...

  8. 银河麒麟不同架构获取rpm包的方法

    银河麒麟不同架构获取rpm包的方法 背景 随着信创和网络安全越来越重要 现阶段国产化的软硬件部署越来越多. 很多时候现场有很多国产化的设备.不同架构.不同版本. 还不能上网, 无法获取对应的安装介质. ...

  9. [转帖]接口偶尔超时,竟又是JVM停顿的锅!

    https://www.cnblogs.com/codelogs/p/16391159.html 简介# 继上次我们JVM停顿十几秒的问题解决后,我们系统终于稳定了,再也不会无故重启了!这是之前的文章 ...

  10. CentOS 下载RPM包的方法

    有时候linux安装rpm包总是各种各样的错误提示, 很不好友 公司网路有不好 很难下载下来rpm包 这个时候可以使用如下网站进行获取rpm包 www.rpmfind.nethttps://cento ...