在研究Mybatis原理之前,先看一下java中是如何实现一次对数据库的访问的:

public void testSql() {

Connection connection = null;

Statement statement = null;

try {

//1.获取dataSource,设置基本属性

DataSource dataSource = new BasicDataSource();

//2.从dataSource获取连接

connection = dataSource.getConnection();

//3.从连接获得sql执行体

statement = connection.createStatement();

//4.创建sql语句

String sql = "select 1 from table1 where id= 1";

//5.执行传入的sql

statement.execute(sql);

//6.获取执行结果

ResultSet resultSet = statement.getResultSet();

} catch (SQLException e) {

//7.处理异常

e.printStackTrace();

} finally {

//8.清理资源

try {

if (statement != null) {

statement.close();

}

if (connection != null) {

connection.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

可以看到,一次完整的数据库访问过程最少包含注释中的8个操作,这个过程用面向对象的方式抽象成以下几个接口:DataSource、Connection、Statement、ResultSet,再加上期间产生的SQLException异常,就构成了基本的java数据库操作体系。

DataSource:数据库资源,存储数据库的url、port、userName、password等参数来建立数据库连接,可以用“池”的方式存储连接,在需要的时候提供现有连接,来减少建立连接的耗时。

Connection:一个连接建立好之后,应当提供关闭的方法--close(),设置连接状态的方法--setAutoCommit()、setReadOnly()等,获取连接状态的方法--getAutoCommit()、getReadOnly()等,获取sql执行语句的方法--createStatement()、prepareStatement()等,对执行的语句进行回滚的方法--rollback()。这些方法基本上包含了针对数据库的所有RUD操作。

Statement:sql执行语句。包含要执行的sql、sql的执行结果以及关闭的方法close()。

PreparedStatement:预制sql语句,继承自Statement。预编译并存储sql语句,可以通过setter(int ,object)方法设置sql语句中的参数,实现动态编写sql语句。

CallableStatement:可调用语句,继承自PreparedStatement。它提供了一种从 Java 程序中调用服务器上的存储过程的方式,也可以通过顺序位置或命名参数的方式输入参数。

**ResultSet **:返回的结果集,通过next()方法顺序访问结果中的每一列,支持获取指定javaType的结果和关闭的方法。

SQLException:数据库访问和操作过程中的异常。所有数据库异常的父类,需要针对具体的异常进行细化。

java解析sql语句简书,Mybatis原理解析(一)--java.sql数据库操作的基本实现方式相关推荐

  1. 【java】Java即时编译(JIT)器原理解析及实践

    1.概述 转载:Java即时编译(JIT)器原理解析及实践 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现"一次编译,处处运行&q ...

  2. c语言解析sql语句_如何在C语言里面执行SQL语句?

    一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1)程序需要获取数据库中某数据表的字段值,并对这些字段值进行解析以执行后续操作. (2)程序需要更新数据库 ...

  3. python中for循环流程图_Python While循环语句实例演示及原理解析

    这篇文章主要介绍了Python While循环语句实例演示及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python 编程中 while ...

  4. java毕业设计摄影服务管理系统服务端mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计摄影服务管理系统服务端mybatis+源码+调试部署+系统+数据库+lw java毕业设计摄影服务管理系统服务端mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...

  5. java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...

  6. java毕业设计大学生创业众筹系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计大学生创业众筹系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计大学生创业众筹系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...

  7. 计算机毕业设计JAVA毕业生就业去向登记管理系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA毕业生就业去向登记管理系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA毕业生就业去向登记管理系统mybatis+源码+调试部署+系统+数据库+lw ...

  8. java毕业设计校园内推系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计校园内推系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计校园内推系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  9. 计算机毕业设计JAVA某市教育局综合信息管理平台mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA某市教育局综合信息管理平台mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA某市教育局综合信息管理平台mybatis+源码+调试部署+系统+数据库+lw ...

最新文章

  1. AI科技大本营在线公开课大放送(附演讲PPT)
  2. 雷军写代码水平如何?
  3. JAVA并发编程8_线程池的使用
  4. python如何读写文件-Python读写文件
  5. python怎么知道用哪个库使用-Python链接数据库,使用哪个库,怎么操作?
  6. Java对象的实例化
  7. 搭建Git服务器环境----Git hooks代码自动部署
  8. 配置Xmanager 连接AIX服务器
  9. ubantu获取信息_Ubuntu 下查看CPU 信息命令
  10. CentOS二进制安装Kubernetes
  11. PLSQL如何将千万数据快速插入到另一张表中_数据库设计中的 9 大常见错误
  12. 【机器学习】主成分分析 (PCA)、无监督特征提取
  13. SpringBoot异常处理机制之自定义404、500错误提示页面
  14. 候鸟浏览器cookie登录教程
  15. 智慧校园: 00 开发流程
  16. 指挥系统核心服务器,应急指挥中心指挥调度系统解决方案(一)
  17. visio2010绘制思维导图方法
  18. 大数据平台的元数据管理
  19. iOS视频播放的基本方法
  20. AcWing寒假每日一题 2058.笨拙的手指

热门文章

  1. IEEE-754标准与浮点数运算
  2. HttpClient 设置cookie的问题
  3. 【数据共享】深度学习异常行为数据集—疲劳驾驶数据集—行为分析数据集
  4. 《人群计数和密度估计方法综述》(阅读笔记20220315)
  5. springboot热部署该怎么实现?springboot热部署实现方式
  6. 使用C#通过串口控制IT6333B电流源
  7. linux .mo文件,MO 文件扩展名: 它是什么以及如何打开它?
  8. 网页中通过js修改img的src属性刷新图片时,图片缓存问题现象表述及问题解决
  9. linux 时间 环境变量,Linux环境变量的修改(永久,暂时)以及修改ls显示的时间格式...
  10. STM32电子钟万年历Proteus仿真_LCD1602显示