专栏首页方丈的寺院数据库连接(1)-从JDBC到MyBatis

数据库连接(1)-从JDBC到MyBatis

摘要

因为有持久层框架,和Spring的存在,越来越多的人对数据库连接这块不甚了解,只知使用方便,不知其原理。所以写一个数据库连接的系列文章,总结下本人在数据库连接方面遇到的问题,和对数据库连接的理解。

JDBC

jdbc:Java DataBase Connectivity,Java 数据库连接,一套标准的Java API,用来执行SQL语句。这套命名应该是很老了,毕竟将Data Base直接映射成了关系型数据库,或者说,像我之前在介绍NoSQL数据库时多次提到的,NoSQL数据库还没有一套统一的访问标准语句。jdbc的作用就是将SQL变成了Java API 访问。

其中Connection,DriverManager,Statement这些类都是jdk提供的,不依赖其他的jar。jdk提供了一套通用的SQL访问API,但是各个数据库并不相同,有各自的标准,所以各个针对MySQL,Oracle提供了不同的驱动。比如MySQL的驱动。 ```

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId> <version>5.1.9</version>

</dependency>

```

执行Class.forName("com.mysql.jdbc.Driver");加载MySQL驱动```DriverManager.registerDriver(new Driver());``

`这段代码中包含了所有的基本的数据库操作对象

1. 连接url

2. 连接: 数据库Server通信与服务的通信

3. statement:把 SQL 语句发送到 DBMS

4. ResultSet : 数据库操作返回结果后续的其他扩展,都是基于以上各个部分的扩展 获取connection,构建statement,执行时Java操作数据库最基本的操作,以后的所有扩展都围绕这个。从上面的代码中我们可以看到这只是一个hello world,在实际开发中,有很多的数据库操作,如果每个都写一个,那重复代码太多了

以上4个是数据库连接,操作的基本流程,后续框架做的事情都是基于这个实现的

Template--解决重复代码

Template 顾名思议,就是模板,通过模板将样板方法抽象出来

将1的url封装成了一个DataSource对象

将3 Statement重复代码解决了

解决了连接获取,查询重复语句的问题,但是没有解决对象映射的问题,需要为每个数据库对象生成独自的Mapper那么JdbcTemplate是如何做到的呢,因为statemnt的前提是需要一个连接,然后执行。所以对于Spring框架而言,它当前没有connection对象,所以它需要一个回调来执行。

连接池

持久层框架-mybatis

虽然有了JdbcTemplate,但是还缺乏一些操作,比如对象映射,查询数据的时候希望自动映射到对象上,另外需要自动生成SQL语句,不需要进行SQL的拼接,赋值。

mybatis的介绍> MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。重点在于避免了所有的JDBC代码,和手动设置参数以及获取结果集构建一个SqlSessionFactory

spring-mybatis

spring-mybatis 的作用就是让你不知道mybatis

Spring 将会加载必要的 MyBatis 工厂类和 session 类。由spring来接管数据库连接的创建。并且提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中

所有代码

https://github.com/FS1360472174/javaweb/tree/master/db-connection/mysql-jdbc

mybatis 与hibernate一些区别,下期再讲

参考http://www.cnblogs.com/JavaSubin/p/5294721.htmlhttp://www.mybatis.org/mybatis-3/zh/index.htmlhttp://www.mybatis.org/spring/zh/index.htmlhttp://blog.csdn.net/u014723529/article/details/41288333https://github.com/spring-projects/spring-framework/blob/master/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java

本文分享自微信公众号 - 方丈的寺院(gh_c98f244e174d),作者:方丈

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 可落地的DDD(5)-战术设计

    本篇是DDD的战术篇,也就是关于领域事件、领域对象、聚合根、实体、值对象的讨论。也是DDD系列的完结篇。 这一部分在我们团队争论最多的,也有很多月经贴,比如对资...

    方丈的寺院
  • 可落地的DDD(3)-如何利用DDD进行微服务的划分

    前面两篇介绍了DDD的目标管理、DDD的工程结构调整。这篇讨论微服务的划分。微服务是目前后端比较流行的架构体系了,那么如何做好一个微服务的划分?一个微服务的粒度...

    方丈的寺院
  • Mongo连接分析

    在前面的文章中有分析过关系型数据库的连接,以及连接池的原理。在mongo数据库同样存在,经常看到有网友在问mongo 连接了数据库要不要关,怎么关。内置的数据库...

    方丈的寺院
  • 拯救DBA,会说话的数据库 | 下周三揭秘

    点击▲关注 腾讯云数据库 云和AI,为数据库的进化提供了无限可能。 从“数据库+云”到“云+数据库”,腾讯云重新定义数据库云服务。 8月28日,腾讯云数据库将...

    腾讯云数据库 TencentDB
  • 拯救DBA,会说话的数据库 | 8月28日揭秘

    云和AI,为数据库的进化提供了无限可能。 从“数据库+云”到“云+数据库”,腾讯云重新定义数据库云服务。 8月28日,腾讯云数据库将举办战略升级发布会,发布系...

    腾讯大数据
  • 分布式关系数据库探索 - NewSQL 演化过程

    回味过去,展望未来,开始分布式数据库探索之旅,首先了解历史,本文大致梳理一下数据库发展过程,从1970年到2018年,数据库的发展过程,仅供参考,交流和学习,感...

    jinlin
  • Python学习系列:使用pyqt5搭建简单图书管理系统(2)

    在上一篇文章里我们简单的说了一下图书管理系统的设计思路,这一篇文章我们将设计一下此系统的数据库.

    云时之间
  • 应用系统设计数据库到底应该站哪?

    为什么?因为部分公司的DB人员和运维人员没有什么区别,这就是导致上述词汇和印象的原因之一。

    AustinDatabases
  • 【DB笔试面试397】在Oracle中,以下工具可以实现逻辑备份数据库对象或整个数据库的是哪一项()

    逻辑备份是指使用工具exp或expdp将数据库对象的结构和数据导出到二进制文件的过程。当数据库对象被误操作而损坏后就可以使用工具imp或impdp利用备份的文件...

    小麦苗DBA宝典
  • 使用PowerDesigner16.5 逆向数据库生产表结构或导出word文档

    说明:因为PD是32位的,使用JDBC连接数据库时候也需要运行在32位的Java虚拟机上。一般我们机器上安装的都是64位的,所以需要安装32位JDK不用添加到系...

    凯哥Java

扫码关注云+社区

领取腾讯云代金券