jdbc相关
现在开发一般都是Mybatis,也有公司用的Hibernate或者Spring Data JPA。很多时候,不同的项目由不同的程序员开发,在公司层面可能没有将技术完全统一起来,一个项目用Mybatis,一个项目用Hibernate都是很有可能的。
不管用的是什么ORM
框架,都是在JDBC上封装了一层嘛,所以JDBC还是需要好好学习的。
什么是ORM?
Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象。
很多同学不知道JDBC要学到怎么样的一种程度,这里我来讲讲JDBC的知识点有哪些,哪些应该是需要掌握的。
JDBC基础知识
什么是JDBC?JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API
每种数据库都有自己的图形界面呀,我都可以在里边操作执行数据库相关的事,为什么我们要用JDBC?
- 数据库里的数据是给谁用的?给程序用的。我们用的是Java程序语言,所以需要用Java程序去链接数据库来访问数据。
- 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】。对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可。
其实可以好好细品一下JDBC,把接口定义出来,反正你给我实现就对了,无论数据库怎么变,用的时候是同一套API
随后我们简单学习一下这几个接口:Connection、Statement、ResultSet。写出小白必学的Java连接数据库的代码:
- 导入MySQL或者Oracle驱动包
- 装载数据库驱动程序
- 获取到与数据库连接
- 获取可以执行SQL语句的对象
- 执行SQL语句
- 关闭连接
基本流程完了以后,我们要重点学习一下PreparedStatement接口与Statement接口的区别,为什么要用PreparedStatement。
- Statement对象编译SQL语句时,如果SQL语句有变量,就需要使用分隔符来隔开,如果变量非常多,就会使SQL变得非常复杂。PreparedStatement可以使用占位符,简化sql的编写
- Statement会频繁编译SQL。PreparedStatement可对SQL进行预编译,提高效率,预编译的SQL存储在PreparedStatement对象中
- PreparedStatement防止SQL注入。(Statement通过分隔符
'++'
,编写永等式,可以不需要密码就进入数据库)
数据库连接池
为什么我们要使用数据库连接池?数据库的连接的建立和关闭是非常消耗资源的,频繁地打开、关闭连接造成系统性能低下
常见的数据库连接池有C3P0、DBCP、Druid。大家在学习的时候可以用Druid,我曾经用C3P0写了个Demo被diss了(:
Druid是阿里开源的一个项目,有中文文档,跟着学着连接数据库,我相信不会太难。GitHub搜「Druid」就能搜到了
分页
说到分页,面试和工作都是非常常见的了,是必须要掌握的技术。下面来简单说一下Oracle和MySQL是如何实现分页的,以及对应的解释:
Oracle分页:
MySQL分页:
总结:
- Mysql从
(currentPage-1)*lineSize
开始取数据,取lineSize
条数据 - Oracle先获取
currentPage*lineSize
条数据,从(currentPage-1)*lineSize
开始取数据
DBUtils
DBUtils我觉得还算是一个挺好用组件,在学习Hibernate,Mybatis这些ORM框架之前,可以学着用用。可以极大简化我们的JDBC的代码,用起来也很方便。
如果急忙着写毕业设计,还没时间来得及学ORM框架,用这个工具来写DAO
数据访问层,我觉得是一个不错的选择。
可以简单看看代码:
__EOF__

本文链接:https://www.cnblogs.com/sugeek/articles/16576986.html
关于博主:编程菜鸟一只,希望每个今天胜过昨天,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具