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

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

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

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

为什么?

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

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


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

什么是 JDBC

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

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

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

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

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

比如:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.28</version>
</dependency>

JDBC 怎么用

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


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

从以上 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. IDEA | 使用Maven创建Web项目并配置Tomcat

    学习这种方式的原因是以后Tomcat中运行的绝大多数都是Web项目,而使用Maven工具能更加简单快捷的把Web项目给创建出来,所以Maven的Web项目具体如何来构建呢? 在真正创建Maven We ...

  2. Android 加载图片占用内存分析

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/aRDzmMlkqB14Ty67GJs9vg作者:Xu Jie 不同Android版本,对一张图 ...

  3. element-china-area-data

    https://blog.csdn.net/xiejnpeng/article/details/111400199

  4. TOEFL | 202307 改革 · 新版题型总结

    目录 Listening(36min) Reading(35min) Speaking(16min) Writing(29min) Listening(36min) 2 conversation,3 ...

  5. 【TouchGFX】使用v4.18.1版本创建预制电路板工程的正确方法

    选择要使用的电路板 实现自己的程序 Designer运行仿真没问题并生成代码 我习惯使用IAR工具,发现直接编译有错误 上述错误是因为Designer默认生成的工具链是CubeIDE,所以需要使用Cu ...

  6. [转帖]细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

    https://www.cnblogs.com/malecrab/p/5300503.html 1. Unicode与ISO 10646 全世界很多个国家都在为自己的文字编码,并且互不想通,不同的语言 ...

  7. [转帖]故障分析 | 让top命令直接显示Java线程名?-- 解析OpenJDK的一个bug修复

    https://zhuanlan.zhihu.com/p/413136873 作者:阎虎青DBLE 开源项目负责人,负责分布式数据库中间件研发工作:持续专注于数据库方面的技术,始终在一线从事开发:对数 ...

  8. Nginx loki监控日志的学习

    Nginx loki监控日志的学习 背景 学习自: https://mp.weixin.qq.com/s/Qt1r7vzWvCcJpNDilWHuxQ 增加了一些自己的理解 第一部分nginx日志的完 ...

  9. [转帖]Clickhouse单机及集群部署详解

    https://www.cnblogs.com/ya-qiang/p/13540016.html 一.ClickHouse简介 ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析( ...

  10. [转帖]鲲鹏性能优化十板斧——鲲鹏处理器NUMA简介与性能调优五步法

    https://www.cnblogs.com/huaweicloud/p/12166354.html 1.1 鲲鹏处理器NUMA简介 随着现代社会信息化.智能化的飞速发展,越来越多的设备接入互联网. ...