纪念JDBC
技术总是在不断更新变化的,尤其是在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,希望你永远不要醒来。
往期推荐:
● 学会@ConfigurationProperties月薪过三千
● 0.o?让我看看怎么个事儿之SpringBoot自动配置
纪念JDBC的更多相关文章
- 初涉JSP+JDBC 基于SQL2008的登陆验证程序
简单的以代码的形式纪念一下,因为现在还没有解决SQL2008驱动的问题,并且有好多东西要学,所以日后会有更新~ 所安装的软件有:SQL2008,eclipse,tomcat,JDK,涉及环境配置.等等 ...
- Java数据库连接技术——JDBC
大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...
- 玩转spring boot——结合AngularJs和JDBC
参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...
- [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...
- JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
- JDBC增加删除修改
一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...
- JDBC简介
jdbc连接数据库的四个对象 DriverManager 驱动类 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...
- JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
- FineReport如何用JDBC连接阿里云ADS数据库
在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...
- JDBC基础
今天看了看JDBC(Java DataBase Connectivity)总结一下 关于JDBC 加载JDBC驱动 建立数据库连接 创建一个Statement或者PreparedStatement 获 ...
随机推荐
- freeswitch的2833和inband对接方案
概述 freeswitch支持三种模式的DTMF传输方式,分别时inband.INFO.2833. 在传统的PSTN网络中,所有的DTMF码都是inband模式,所以VOIP网络和PSTN网络对接中, ...
- python连接liunx主机:paramiko类基本操作
一.下载paramiko类 pip install paramiko 二.实现过程 # coding utf-8# author:Mr.white import paramiko # 创建SSHCli ...
- 容器网络原理分析:veth 和 network namespace
1. Liunx veth-pair 和 network namespace Docker 中容器的访问需要依赖 veth-pair 和 network namespace 等技术.network n ...
- 每天学五分钟 Liunx 0101 | 服务篇:创建进程
创建子进程 上一节说过创建子进程的三种方式: 1. fork 复制进程:fork 会复制当前进程的副本,产生一个新的子进程,父子进程是完全独立的两个进程,他们掌握的资源(环境变量和普通变量)是一样的. ...
- SD Host控制器微架构设计-02
SD_clk 测试模式下,选择hclk,将扫描链中的时钟保持一致 clk_en表示可以通过软硬件关闭时钟 sd_if模块 模块中设置一些寄存器,我们可以对寄存器进行读写或者对于寄存器中的某些域段进行读 ...
- css - 伪元素清除浮动
.clearfix:after{ content:""; /*设置内容为空*/ height:0; /*高度为0*/ line-height:0; /*行高为0*/ display ...
- SQLServer 执行计划的简单学习和与类型转换的影响
SQLServer 执行计划的简单学习和与类型转换的影响 背景 最近一直在看SQLServer数据库 索引.存储.还有profiler的使用 并且用到了 deadlock graph 但是感觉还是不太 ...
- [转帖]存储器分级:L1 Cache 比内存和 SSD 快多少倍?
目录 1.为什么会有存储器分级策略? 2.存储器分级策略 2.1 存储器的级别 2.2.1 L1-Cache 2.2.2 L2-Cache 2.2.3 L3-Cache 3.内存 4.SSD 和硬盘 ...
- [转帖]tidb RESTORE
https://docs.pingcap.com/zh/tidb/v4.0/sql-statement-restore RESTORE 语句用于执行分布式恢复,把 BACKUP 语句生成的备份文件恢复 ...
- [转帖]Shell字符串拼接(连接、合并)
http://c.biancheng.net/view/1114.html 在脚本语言中,字符串的拼接(也称字符串连接或者字符串合并)往往都非常简单,例如: 在 PHP 中,使用.即可连接两个字符串: ...