九点钟☆方向

记录成长点滴

欢迎来到我的个人博客~


Mybatis笔记(一) 基础知识回顾

目录

什么是框架

简单概括:框架是软件开发中的一套解决方案,不同的框架解决不同的问题。封装了很多细节,使开发者使用极简的方式就能实现功能,大大提高开发效率。

软件开发中的三层架构

表现层:用于展示数据

业务层:用于处理数据

持久层:和数据库进行交互

持久层的技术解决方案

  • JDBC技术:Connection,PreparedStatement,ResultSet
  • spring的JdbcTemplate:spring对JDBC的简单封装
  • Apache的DButils:和spring的JdbcTemplate很像,也是对JDBC的简单封装

但是以上这些都不是框架,JDBC是规范,JdbcTemplate和DButils只是工具类

传统JDBC知识点回顾

  1. 注册驱动为什么用Class.forName(“com.mysql.jdbc.Driver”)而不使用DriverManager.registerDriver(new com.mysql.jdbc.Driver())

    通过类加载的方式来加载Driver类,照样能够执行static代码块中的注册驱动的方法。而且由于将Driver的位置写成了字符串的形式,编写代码编译的时候不会报错,对jar包的依赖就降低了,也易于使用配置文件加载这个类,所以下次如果换成连接Oracle或者其他数据库,改一下配置文件再填一个jar包就可以了。

    注意:jdbc4.0之后每个驱动的jar包中在META-INF/services目录下提供了一个名为java.sql.Driver的文件,文件内容就是该接口的实现类名称,所以不写class.forName(……)也会执行成功,但是建议写上,以便兼容老版本

  2. JDBC为什么用PreparedStatement而不是Statement?

    • 使用PreparedStatement,数据库系统会对sql语句进行预编译处理。预处理语句将被预先编译好,执行计划会被缓存起来,这条预编译的sql语句能在将来重用,调用时只要是相同的预编译语句就不需要编译,他的查询速度会快

    • 可以写动态参数化的查询方式。用?作为占位符

      SELECT interest_rate FROM loan WHERE loan_type=?

    • PreparedStatement可以防止sql注入。在使用参数化的查询方式时,不会将参数内容视为sql指令的一部分,而是在完成SQL指令的编译后才套用参数运行,因此就算参数中含有破坏性指令也不会被数据库所运行,可以防止大部分的sql语句

  3. PreparedStatement设置参数下标从1开始

    preparedStatement.setString(1,”张三”)

  4. JDBC数据库连接中资源的关闭顺序

    先关闭resultSet,然后是statement,最后是connection。与创建的顺序相反。关闭顺序不对可能会出现异常。

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦