jdbc
Java 程序源
微信公众号: Java 程序源,敬请关注!
展开
-
01. jdbc 简介
1. jdbc 简介jdbc(Java Database Connectivity) 是一个独立于特定数据库管理系统, 通用的sql数据库存取和操作的共用接口, 定义了用来访问数据库的标准java类库. jdbc 为访问不同的数据库,提供了一种统一的API.1.1 jdbc APIjdbc API(接口)包括两个层次:面向应用的API: Java API(接口), 供java 应用程序...原创 2019-08-27 16:00:35 · 257 阅读 · 0 评论 -
17. jdbc实战-实现类Hibernate 单表增删改查
熟悉Hibernate/JPA的同学知道, Hibernate/JPA对单表的增删改查是相当方便的, 直接操作java 实体即可, 这是jdbc 和 Mybatis 是所不能及的. jdbc 和 Mybatis 在操作单表的增删改错时, 依然需要手写sql, 比较繁琐. 那么我们就使用jdbc 实现一下类似于Hibernate/JPA 对单表的操作.1. 方案设计1.1 实体与表映射设计对于...原创 2019-08-27 15:58:55 · 586 阅读 · 0 评论 -
18. jdbc实战-实现类SpringDataJpa中BaseDao
笔者上篇博客介绍了如何使用JDBC来实现类似于Hibernate中对单表增删查改的EntityManager, 但是对于单表查询, 删除都需要传入目标对象的类型, 这个有点儿繁琐. 熟悉Spring Data JPA 的同学, 应该知道, 在Spring Data JPA 中, 对单表的操作, 只需要继承一个BaseRepository 对象即可. 那么我们也对此来封装一个BaseDao 对象....原创 2019-08-27 15:58:48 · 396 阅读 · 0 评论 -
16. jdbc实战-实现类Mybatis结果集解析
Jdbc 比较繁琐的一个操作就是解析结果集ResultSet, 在实际开发时, 通常会将对结果集的解析封装为一个工具类. 需要注意的时, jdbc查询出来的属性可能不能直接转换为java的类型, 比如说java.sql.Date, 不能直接转换为java.util.Date 或LocalDate等类型, 需要自定义转换器. 如果比较熟悉Mybatis的话, 会发现Mybatis底层也封装了大量的类...原创 2019-08-27 15:59:00 · 751 阅读 · 2 评论 -
15. jdbc 工具包-dbUtils
1. DbUtils 简介DbUtils 是Apache 组织下的一个jdbc 操作的工具包, 更新截止于2017年7月. 虽然说笔者认为这个工具包封装的API 并不是太好用, 不能达到笔者的预期, 但是笔者认为还是值得花点儿时间学习和研究一下的. 原因有两个方面: 一方面是可能工作项目中有人使用了DbUtis工具包, 另一方面是可以学习DbUtilsAPI的封装方法, 以及源代码, 自己开发一...原创 2019-08-27 15:59:05 · 714 阅读 · 2 评论 -
14. jdbc 数据连接池-c3p0
1. 数据连接池简介数据连接池(Connection Pool)技术, 就是为数据库连接建立一个对象池, 连接对象池中预先创建一定数据的连接. 当应用需要数据库连接时, 直接从连接池中获取, 无须单独创建; 用于之后, 将连接归还给连接池, 无须单独销毁. 应用所需所有的数据库连接由连接池统一进行创建, 分配, 销毁, 管理等.1.1 数据连接池背景对于当需要连接时, 自行获取, 用于自行...原创 2019-08-27 15:59:10 · 210 阅读 · 0 评论 -
13. jdbc 类型映射
本文来源于: https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html1. Mybsql&Jdbc&java 类型转换Mysql 类型JDBC 类型ResultSetMetaData.GetColumnTypeName()java 类型Resu...原创 2019-08-27 15:59:15 · 727 阅读 · 0 评论 -
12. jdbc 事务嵌套
1. jdbc 事务嵌套jdbc 提供了事务保存点的概念, 用于指定事务的回滚时间点.在执行回滚操作时, 可指定回滚到哪个保存点. 这这保存点之间的所有操作都将回滚如果执行回滚操作时, 不指定保存点, 则将该连接的所有操作全部回滚通过设置事务的保存点, 可实现事务嵌套. spring的事务传播策略Propagation.NESTED, 就是借助于此实现的.1.1 相关API...原创 2019-08-27 15:59:20 · 1031 阅读 · 0 评论 -
11. jdbc 只读连接
1. jdbc 的只读特性jdbc 的连接可以设置为只读连接, 只读连接只能执行查询, 不能执行增删改等操作.连接的只读特性需要数据库驱动支持, 并非所有数据库驱动都支持. mysql 是支持的, 但是oracle 是不支持的.对于支持只读特性的数据库驱动, 除了限制该连接不能进行更新操作之外, 还会对sql进行一定的优化.数据库连接的只读特性, 可以用于实现读写分离, 只读事务等操作....原创 2019-08-27 15:59:25 · 3450 阅读 · 1 评论 -
10. jdbc 元数据
1. jdbc 元数据jdbc 的元数据, 指的是数据库的基本信息(数据库版本号, 数据库列表等) 和 查询结果集中的列信息(列名称, 列数量等).1.1 DatabaseMetaData 常用APIDatabaseMetaData 用于获取数据库的基本信息, 如数据库版本号, 数据库连接地址,用户名, 数据库表类型等信息.DatabaseMetaData 通过Connection 对象...原创 2019-08-27 15:59:54 · 234 阅读 · 0 评论 -
09. jdbc 事务隔离级别
1. 事务隔离级别1.1 事务引发的并发问题当多个事务并发运行时, 如果多个事务同时操作数据库中的相同数据,那么就容易产生并发问题. 笔者通过两个事务T1, T2 来举例:脏读: 若事务T1 执行了更新字段, 但是还未执行提交操作; 此时如果T2 就读取到了T1 还未提交的字段, 那么就称之为脏读. 因为T1 不一定会执行提交操作, 也有可能执行回滚操作.不可重复读: 若T1 中读取了一...原创 2019-08-27 15:59:59 · 339 阅读 · 0 评论 -
08. jdbc 事务
1. 数据库事务数据库事务, 通俗来将, 就是将多个增删改操作组成一个原子操作来执行, 原子操作要么同时成功, 要么失败. 而且在事务的执行过程中, 子操作涉及到的数据具有线程安全的特性, 不会被并发的其它事务所篡改.1.1 事务四大特性数据库事务有四大特性, 简称ACID:原子性(Atomicity): 指事务作为一个整体, 事务包含的所有操作要么同时成功, 要么同时失败. 不存在部分...原创 2019-08-27 16:00:03 · 207 阅读 · 0 评论 -
07. jdbc 批量操作
1. 批量操作当需要执行批量插入或批量更新操作时, 普通的一条sql一提交方式, sql执行效率很低. 对此我们可以借助于JDBC 的批量提交机制, 可以大幅提升批量操作性能. 对于JDBC 支持两种批量操作方式:单条sql批量传参: 借助于PreparedStatment 实现, 最常用多条sql批量操作: 借助于Statment实现, 不常用1.1 批量传参模式Connect...原创 2019-08-27 16:00:08 · 647 阅读 · 0 评论 -
06. jdbc CallableStatement 调用存储过程与函数
1. jdbc 调用存储过程jdbc 调用存储过程与函数, 均是通过CallableStatement 类执行sql的. 通常而已, 存储过程是不允许有返回值的, 而函数是允许有返回值的.1.1 CallableStatement sqljdbc调用存储过程与函数的sql写法有区别, 需要额外注意:存储过程: { call $produceName([?,…]) }函数: { ?= c...原创 2019-08-27 16:00:13 · 934 阅读 · 0 评论 -
05.jdbc PreparedStatement 执行查询
PreparedStatement 执行查询和执行增删改操作流程没有太大区别, 只有两点:查询使用的方法是 PreparedStatemnet.executeQuery();查询结果返回的是ResultSet, 需要进行解析.1. ResultSet简介ResultSet 数据结构类似于一个二维数组和游标的结合, 和普通的java 数据结构有点儿不太一样.默认情况下, 游标指向二维...原创 2019-08-27 16:00:17 · 5297 阅读 · 0 评论 -
04. jdbc PreparedStatement 执行增删改
1. PreparedStatement 执行增删改PreparedStatement 执行增删改的步骤, 基本一致. 唯一不同的就是sql 和设置参数不一样.1.1 增删改模板执行增删改模板操作步骤如下:获取数据库连接对象Connection通过准备sql, 获取PreparedStatement 对象设置PrepareStatment 的参数通过executeUpdate()方...原创 2019-08-27 16:00:22 · 1219 阅读 · 0 评论 -
02. jdbc 数据库连接管理
数据库连接, 是java 与数据库进行数据传输的桥梁, 是jdbc 的基础. 但是通常在企业开发中, 我们并不会直接解除到数据库连接, 那是因为通常我们会采用数据源来统一管理数据库连接.1. 引入数据库驱驱动连接数据库, 首先就是需要加载数据库对应的驱动程序. 笔者采用mysql 数据库, 因此需要加载mysql 的数据库驱动程序.<dependency> <gro...原创 2019-08-27 16:00:30 · 627 阅读 · 0 评论 -
03. jdbc Statement sql注入风险
1. Statement 用法Statement 用法比较简单, 不需要设置参数. 创建了Statment对象之后, 直接执行sql即可. 执行步骤可总结如下:获取数据库连接创建Statment对象执行sql增删改: 执行executeUpdate(sql)方法, 返回sql影响的行数查询: 执行executeQuery(sql)方法, 返回查询结果ResultSet, 然后解析结...原创 2019-08-27 16:00:26 · 450 阅读 · 0 评论