JDBC
文章平均质量分 62
JDBC学习笔记
洛上言
路漫漫我不畏
展开
-
【JDBC】工具类封装_baseDao概念
我们刚刚完成了JDBC第一个版本和第二个版本的封装,但是这两个版本只是优化了JDBC操作中的某几步(下图中的1、2、8步)。下面会使用BaseDao将3、4、5、6、7步优化。我们后期,基本上每一个数据表都应该有一个对应的 DAO 接口及其实现类,发现对所有表的操作(增、删、改、查)代码重复度很高,所以可以,给这些 DAO 的实现类可以抽取一个公共的父类,我们称为BaseDao。原创 2024-07-27 21:46:07 · 300 阅读 · 0 评论 -
【JDBC】工具类封装_获取连接工具类 —— 版本2
v1版本的问题:同一个线程不同的方法拿到的也都是新的一个对象例如之前写的事务代码,业务层需要使用connection对象开启事务,开启事务后,还需要将connection传递给dao层,此时dao层都是用同一个connection获取相关的Statement进行数据库操作,但传参数的方式还是很low的,因为dao层的方法会额外增加一个参数的位置。首先要清楚,service中的方法和dao中的方法属于同一个线程,那我能不能让同一个线程不同位置的方法获取到的是同一个连接呢?避免在方法中传递连接。原创 2024-07-27 21:45:35 · 343 阅读 · 0 评论 -
【JDBC】获取连接工具类 —— 版本1
我们可以把druid创建的过程封装到一个工具类,使druid连接池只初始化一次,内部包含用软编码的形式创建连接池对象,同时对外提供连接的方法和回收连接的方法!如果每次写代码的过程中,都去创建一个druid连接池,这样很麻烦。PS:工具类中的异常不要try-catch,需要抛出去。位置:src/druid.properties。原创 2024-07-27 21:44:56 · 396 阅读 · 0 评论 -
【JDBC】连接池介绍和druid连接池使用
连接是可以复用的,但是我们每次数据库操作,其实我们都是把连接给close掉了,接下来我们要做的事就是把连接复用起来,复用连接不仅是提升性能,也提升程序的响应时间,接下来我们用连接池的技术把连接复用起来。原创 2024-07-27 21:44:26 · 392 阅读 · 0 评论 -
【JDBC】事务回顾和设计转账类结构
事务添加是在业务方法中,利用try catch 代码块开启事务和提交事务、和事务回滚!多个SQL语句需要在同一个事务中,也就是需要在同一个连接中,因此将connection传入dao层即可!dao只负责使用,不要close()!原创 2024-07-27 21:41:49 · 571 阅读 · 0 评论 -
【JDBC】批量插入数据优化
1.url路径后面添加?rewriteBatchedStatements=true 允许批量插入2.insert into 必须写values, 语句末尾 不能 添加 “;” 结束,因为它是采用追加的方式接上SQL语句的3.不是执行语句每条,是批量添加 addBatch();4.遍历添加完毕以后,统一批量执行 executeBatch()如下图可以看见executeLargeBatch方法中并没有执行任何操作,因此它其实是一个假方法。原创 2024-07-26 13:54:21 · 606 阅读 · 0 评论 -
【JDBC】主键回显和主键值获取
如果有一个需求,需要主键逐渐增长,,数据库一般都会将主键设置为整数类型,并且自增长,所以当我们在插入数据时,我们不需要维护这个主键。但是如果我们想要获取到这个主键怎么办?主键回显:java 程序获取插入数据时 mysql 维护自增长的主键 id 值。作用:在多表关联插入数据时,一般主表的主键都是自动生成的,所以在插入数据之前无法知道这条数据的主键,但是从从表需要在插入数据之前就绑定主表的主键,此时可以使用主键回显技术。原创 2024-07-26 13:53:22 · 364 阅读 · 0 评论 -
【JDBC】PreparedStatement总结
/1. 注册驱动//方案1: 调用静态方法, 但是会注册两次//1. 注册驱动 //方案1: 调用静态方法, 但是会注册两次 DriverManager . registerDriver(new com . mysql . cj . jdbc . Driver());//方案2: 反射触发 Class . forName("com.mysql.cj.jdbc.Driver");原创 2024-07-26 13:52:51 · 299 阅读 · 0 评论 -
【JDBC】PreparedStatement执行DQL语句并获取列信息
需求:询所有用户数据,并且封装到一个List。原创 2024-07-26 13:51:50 · 385 阅读 · 0 评论 -
【JDBC】preparedstatement执行 dml 语句练习
JUnit测试包是IDEA中自带提供的,直接。PS:curd是增删改查的缩写。新学知识:如何获取一列的数据。原创 2024-07-26 13:51:09 · 327 阅读 · 0 评论 -
【JDBC】preparedstatement基本使用流程
PS:statement是在发送SQL语句的时候传入的sql,而preparedstatement是在创建预编译statement的时候就发送了sql语句!而PreparedStatement叫做预编译,它会提前知道你的SQL结构,然后再给对应的结构动态赋值,不会让它充当SQL的部分,防止了注入攻击。因此statement只适合执行静态的SQL语句,即没有任何动态条件值的SQL语句,如果有多个条件值,它会发生注入攻击。1、只能拼接字符串类型,如果你数据库有一个字符串数组,它是拼接不了的。原创 2024-07-26 13:50:33 · 287 阅读 · 0 评论 -
【JDBC】Statement使用步骤详解
DQL选择,非DQL选择。原创 2024-07-26 13:49:48 · 522 阅读 · 0 评论 -
【JDBC】statement_基本步骤演示
PS:在setting-Editor-File and Code Templates–Class里可以设置自动添加注释。原创 2024-07-26 13:47:59 · 273 阅读 · 0 评论 -
【JDBC】核心api使用步骤总结
但是要注意的是,上面的jar才是jar包,zip是源码包,存放在lib中就行了,不用动它,因此只有jar包才需要Add As a Library。但是在以后我们会用到很多很多别人写好的代码,因此在正式使用的第一步是:在项目中新建一个文件夹:lib,这个文件夹以后去专门存放第三方jar包。中其实就是别人写好的各种各样的类,如果你想要使用这些类中的方法,是不能直接用的,而是需要先将别人的代码导入到我们自己的项目中。我们这是两个程序,想连接,我们得建立一个桥梁,因此需要建立连接,即建立一个桥梁。原创 2024-07-26 13:47:11 · 285 阅读 · 0 评论 -
【JDBC】为什么选择8x版本驱动
我们选择8x版本呢已经不是选择性问题,而是必然性的问题,我们根据MySQL官网给出的解释,总结出了四点。官网:https://dev.mysql.com/doc/connector-j/en/原创 2024-07-26 13:46:17 · 292 阅读 · 0 评论 -
【JDBC】核心api和使用路线
因为各个数据库厂商的 DBMS 软件各有不同,那么内部如何通过 sql 实现增、删、改、查等管理数据,只有这个数据库厂商自己最清楚,因此把接口规范的实现交给各个数据库厂商自己实现。但是往往在开发中,我们的fSQL语句都是非静态的,只要是动态值,就需要使用PreparedStatement,预编译执行。所以第三方的数据库厂商都会把它们的实现打成一个对应的压缩包,而我们在使用的时候,只需要把这压缩包导入数据库就行了。静态:你的语句中没有任何条件值,例如查询id = 1的数据。原创 2024-07-26 13:45:00 · 385 阅读 · 0 评论 -
【JDBC】jbdb概念理解
USB是一个技术统称,我们的理解它应该由三部分组成!第一部分:USB的规范和设计标准(概念)第二部分:电脑端厂商就可以根据这个规范去设计符合规定的USB接口(接口)第三部分:外设的USB口和具体发送信号的驱动程序(实现类)jdbc是java连接数据库技术的统称一是Java提供的jdbc规范(接口)二是各个数据库厂商的实现驱动jar包!jdbc技术是一种典型的面向接口编程!它会结偶合,会更加灵活。优势:我们只需要学习jdbc接口规定方法,即可操作所有数据库软件。原创 2024-07-26 13:44:15 · 398 阅读 · 0 评论 -
【JDBC】JDBC介绍
数据库框架进行数据库相关的操作,例如半自动的mybits,全自动的hibernate,或者是注解方式进行数据库操作的Spring Date等等。那么JAVA程序就一定会和数据库软件进行通信,进行数据转存的工作,那么JAVA和数据库软件之间进行通信的技术。我们就称作JDBC技术。那么,如果你想查看框架的源码,如果你想了解下这个框架的工作原理,或者是你要根据你的开发需求进行这些框架的定制化开发,你还是必须要掌握它们的底层原理。它们都是对JDBC技术进行的封装,也就说它们的底层原理用的还是JDBC技术。原创 2024-07-26 13:43:24 · 236 阅读 · 0 评论