纪念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 获 ...
随机推荐
- celery与django的结合以及定时任务配置
一.conda创建新的开发环境 C:\Users\yc>conda create --name celery_django python=3.8 C:\Users\yc>conda inf ...
- 【驱动】SPI驱动分析(二)-SPI驱动框架
SPI驱动框架 SPI驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,他们都是实际的总线.总体框架如下图所示: 从上到下,分为三层,用户空间,内核空间,和硬件层. 用户空 ...
- windows不安装虚拟机如何使用Linux系统作为开发工具?
哈喽,大家好,我是仲一.作为嵌入式开发程序员,常常需要在Linux环境下编译一些代码.安装虚拟机比较方便,但是,太占用内存了.性能不好的电脑开了一台虚拟机后,可能就干不了其他事情了.安装双系统也比较麻 ...
- 《IT项目管理知识》出书了,特点:全是干货
大纲目录,及内容如下.本书属于付费内容
- BFS(广度优先搜索) poj3278
***今天发现一个很有趣的是,这道题应该几个月前就会了,但是一次比赛中总是WA,果断C++提交,然后就过了,然后就很无语了,G++不让过C++能过,今天又交一遍发现把队列定义为全局变量就都能过了,至于 ...
- 操作系统OS学习总结
操作系统OS笔记 操作系统概述 操作系统定义 操作系统,是计算机系统中最基本.最重要的系统软件,是其它软件的支撑.控制和管理计算机系统的硬件和软件资源,合理的组织计算机工作流程,并为用户使用计算机提供 ...
- Go 疑难杂症汇总
1. revision v0.0.0: unknown revision v0.0.0 go get -u github.com/uudashr/gopkgs/cmd/gopkgs 报错: [root ...
- 【解决方案】如何使用 Http API 代替 OpenFeign 进行远程服务调用
目录 前言 一.何为OpenFeign 1.1@FeignClient注解 1.2注意事项 二.常见的Http API 2.1Apache 2.2Okhttp 2.3Hutool 三.RestTemp ...
- 重写SpringCloudGateway路由查找算法,性能提升100倍!
如果你也在做SpringCloudGateway网关开发,希望这篇文章能给你带来一些启发 背景 先说背景,某油项目,通过SpringCloudGateway配置了1.6万个路由规则,实际接口调用过程中 ...
- [转帖]oracle ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)
字符集子集向其超集转换是可行的,如此例 ZHS16GBK转换为AL32UTF8. 导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的N ...