MyBatis 框架系列之基础初始

1、什么是 MyBatis

MyBatis 本是 apache 的一个开源项目 iBatis,后改名为 MyBatis,它 是一个优秀的持久层框架,对 jdbc 的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis 通过 xml 或注解的方式将要执行的各种 statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过 Java 对象和 statement 中的 sql 进行映射生成最终执行的 sql 语句,最后由 Mybatis 框架执行 sql 并将结果映射成 Java 对象并返回。

2、MyBatis 架构详解

(1)MyBatis 配置文件:

SqlMapConfig.xml: 此文件作为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息。

mapper.xml: 即 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要在 SqlMapConfig.xml 中加载。

(2)通过 MyBatis 环境等配置信息构造 SqlSessionFactory, 即会话工厂。

(3)由会话工厂创建 sqlSession ,即会话,操作数据库需要通过 sqlSession 进行。

(4)MyBatis 底层自定义了 Executor 执行器接口操作数据库,Executor 接口有两个实现,一个是基本执行器、一个是缓存执行器。

(5)Mapped Statement 是 MyBatis 一个底层封装对象,它包装了 MyBatis 配置信息及 sql 映射信息等。mapper.xml 文件中一个 sql 对应一个 Mapped Statement 对象,sql 的 id 即是 Mapped statement 的 id。

(6)Mapped Statement 对 sql 执行输入参数进行定义,包括 HashMap、基本类型、pojo,Executor 通过Mapped Statement 在执行 sql 前将输入的 Java 对象映射至 sql 中,输入参数映射就是 jdbc 编程中对preparedStatement 设置参数。

(7)Mapped Statement 对 sql 执行输出结果进行定义,包括 HashMap、基本类型、pojo,Executor通过Mapped Statement 在执行 sql 后将输出结果映射至 Java 对象中,输出结果映射过程相当于 jdbc 编程中对结果的解析处理过程。

3、传统的 JDBC 编程问题总结

(1)JDBC 编程步骤

1)加载数据库驱动

2)创建并获取数据库链接

3)创建 jdbcstatement 对象

4)设置 sql 语句

5)设置 sql 语句中的参数(使用preparedStatement)

6)通过 statement 执行 sql 并获取结果

7)对 sql 执行结果进行解析处理

8)释放资源(resultSet、preparedstatement、connection)

(2)JDBC 程序实例

public class Test {
  public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 通过驱动管理类获取数据库链接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
            // 定义sql语句 ?表示占位符
            String sql = "select * from user where username = ?";
            // 获取预处理statement
            preparedStatement = connection.prepareStatement(sql);
            // 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
            preparedStatement.setString(1, "王五");
            // 向数据库发出sql执行查询,查询出结果集
            resultSet = preparedStatement.executeQuery();
            // 遍历查询结果集
            while (resultSet.next()) {
                System.out.println(resultSet.getString("id") + "  " + resultSet.getString("username"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
      }
}

(3)传统 JDBC 程序问题总结

1)数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。如果使用数据库连接池可解决此问题。

2)sql 语句在代码中硬编码,造成代码不易维护,实际应用中 sql 变化的可能较大,sql 变动需要改变 Java 代码。

3)使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。

4) 对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析比较方便。

4、MyBatis 入门实例:鉴于导入 jar 包开发程序相对麻烦,因此接下来的框架和项目程序均使用 Maven 工具来进行项目管理,所以入门程序会在下一个 Maven 系列文章更新完后再重新讲解。

扫描二维码关注微信公众号compassblog,了解更多

原文地址:https://www.cnblogs.com/compassblog/p/8878767.html

时间: 2024-11-07 22:31:59

MyBatis 框架系列之基础初始的相关文章

SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件

一.Mybatis框架 1.mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录. 2.mybatis特点 1)sql语句与代码分离,存放于xml配置文件中,方便管理 2)用逻辑标签

Mybatis框架基础支持层——反射工具箱之Reflector&ReflectorFactory(3)

说明:Reflector是Mybatis反射工具的基础,每个Reflector对应一个类,在Reflector中封装有该类的元信息, 以及基于类信息的一系列反射应用封装API public class Reflector { private static final String[] EMPTY_STRING_ARRAY = new String[0]; /** * 对应的类Class对象 */ private Class<?> type; /** * 类中可读属性的集合,就是存在相应的get

用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)在这个基础上面 继续进行spring的配置. 回顾上面  我们已经成功测试通过了Mybatis的配置. 这时候的目录结构是: 一:下面我们继续补充目录结构,在com.peakfortake的文件目录项目 

[转载]WPF入门教程系列一——基础

一. 前言   最近在学习WPF,学习WPF首先上的是微软的MSDN,然后再搜索了一下网络有关WPF的学习资料.为了温故而知新把学习过程记录下来,以备后查.这篇主要讲WPF的开发基础,介绍了如何使用Visual Studio 2013创建一个WPF应用程序. 首先说一下学习WPF的基础知识: 1) 要会一门.NET所支持的编程语言.例如C#. 2) 会一点“标准通用标记语言”:WPF窗体程序使用的XAML语言,也属于“标准通用标记语言”的一个分支.如果以前接触过XML.HTML.XHTML.AS

Quartz.NET开源作业调度框架系列

Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中.Quartz.NET提供了巨大的灵活性但又兼具简单性.开发人员可用它快捷的创建并执行一个自动化作业.Quartz.NET有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等. 针对Quartz.NET的使用,从基础入门,Cron表达式,不同job间进行参数传递进行了介绍,并对插件任务进行了描述,最后将AdoJobStore如何保持到数据库中进行

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释 2016-04-14 23:40 13030人阅读 评论(2) 收藏 举报 分类: SSM(7) 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿出来一起分享一下,希望有不足的地方大家批评指正~~~ 首先   这篇文章暂时只对框架中所要用到的配置文件进行解

快速入门系列--WebAPI--01基础

ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因此两者相关类的命名空间有细微差异,在使用时需要注意. WebAPI学习系列目录如下,欢迎您的阅读! 快速入门系列--WebAPI--01基础 快速入门系列--WebAPI--02进阶 快速入门系列--WebAPI--03框架你值得拥有 快速入门系列--WebAPI--04在老版本MVC4下的调整 W

【APS.NET 框架系列】浅谈ASP.NET 框架

   本篇文章稍微偏原理且底层,有一定难度和且比较晦涩. 本篇文章主要是从广度上概括一下,具体的更细粒度的,会在后续的文章中,结合具体的Demo实例分析. 一 .NET框架概述 1.作用:提供了基于.NET框架开发的基础平台和模板,为.NET开发的基架; 2.基本构成:可支持语言,CLS,模板框架,基本模板,基本操作,基本类库,公共需要运行时,CTS和CLS,OS等; (1)可支持语言:.NET框架可支持vb,c++,c#,F#,js等语言开发; (2)CLS:通用语言规范,使多种语言开发成为了

Python Web框架【Django框架第一篇基础】

Django框架第一篇基础[DjangoMTV模式] 老师博客[www.cnblogs.com/yuanchenqi/articles/6811632.html] 同学博客:http://www.cnblogs.com/haiyan123/p/7701412.html Django官网:https://www.djangoproject.com/download/ 一.安装Django DjangoMTV模式 Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代