01-Mybatis概述

一、概述

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

MyBatis的一个重要特点是SQL语句与Java代码的分离,开发者可以使用面向对象的方式编写Java代码,而不需要直接编写SQL语句,MyBatis会自动将Java对象中的数据映射到相应的数据库表中。同时,MyBatis还支持动态SQL、事务管理和缓存等功能,使得开发过程更加便捷和高效。

MyBatis的核心组件包括SqlSessionFactory、SqlSession和Mapper,其中SqlSessionFactory是MyBatis的核心接口,用于创建SqlSession对象;SqlSession是MyBatis执行持久化操作的主要对象,可以执行SQL语句、管理事务以及提供一级缓存和二级缓存等功能;Mapper是MyBatis用于定义SQL语句的接口,通过@Select、@Update、@Insert和@Delete等注解来声明SQL语句,然后在代码中调用Mapper接口的方法来执行SQL语句。

二、什么是持久层

持久层是指在软件系统中负责将数据持久化到存储介质中(例如关系型数据库)的一层,它主要处理数据的增删改查等操作。

持久层的主要目标是将应用程序中的数据和业务逻辑解耦,使得修改数据的过程变得简单和方便,同时还能够提高程序的可维护性和可扩展性。持久层的实现一般是基于数据库技术,因此需要考虑诸如数据安全、性能优化等方面的问题。

三、JDBC 的缺点

JDBC(Java DataBase Connectivity)是Java语言中用于访问数据库的一种标准接口,它提供了一套与具体数据库无关的API,使得Java程序可以通过统一的方法访问各种不同的关系型数据库。

JDBC提供了一系列的类和接口,主要包括以下几个部分:

1. Driver接口:用于管理数据库驱动程序,实现对数据库的链接。

2. Connection接口:用于管理数据库连接,负责创建Statement和PreparedStatement对象。

3. Statement和PreparedStatement接口:用于执行SQL语句,并返回执行结果。

4. ResultSet接口:用于处理查询结果集。

5. SQLException类:用于处理异常情况。

使用JDBC,我们可以通过Java程序执行各种SQL命令,例如创建数据库、建表、插入数据、更新数据和查询数据等。同时,JDBC还提供了事务管理、批处理、元数据查询等高级功能,使得Java程序能够更加方便地操作数据库。

JDBC 虽然为Java程序提供了访问各种关系型数据库的标准接口,但它也存在一些缺点:

1. 编写繁琐:使用JDBC需要编写大量的重复代码来完成数据库操作,例如连接数据库、创建Statement对象、解析返回结果等,使得开发效率较低,代码可读性不高。

2. SQL语句硬编码:在JDBC中,SQL语句通常需要硬编码到Java代码中,这样会导致代码耦合性较高,难以维护和扩展。同时,如果应用程序需要支持多种不同的数据库,也需要针对不同的数据库编写不同的SQL语句,增加了工作量和维护成本。

3. 数据类型转换不方便:在JDBC中,Java数据类型和数据库数据类型之间存在差异,需要进行类型转换,使得代码更加复杂。同时,如果应用程序需要处理复杂的数据类型,例如日期、时间、二进制数据等,则需要进行更多的转换操作。

4. 效率较低:在JDBC中,每次执行SQL语句都需要建立连接、创建Statement对象、解析结果集等步骤,这些操作都会占用大量的系统资源和时间,导致效率不高。

为了解决这些问题,很多ORM框架和数据库连接池等技术都应运而生,例如Hibernate、MyBatis、Spring JDBC等,它们能够提供更高效、更易用、更灵活的数据库访问解决方案。

四、Mybatis 简化 JDBC

MyBatis通过将Java对象与数据库表的行进行映射,实现了将JDBC操作进行简化的目的。相对于传统的JDBC代码,使用MyBatis可以减少大量重复、冗余的代码,提高开发效率和程序可读性。以下是MyBatis如何简化JDBC操作的几点说明:

1. 数据库连接获取:在JDBC中,需要手动获取数据库连接,而在MyBatis中,使用数据源可以自动获取数据库连接,简化了数据库连接的获取过程。

2. SQL语句拼接:在JDBC中,需要手动拼接SQL语句,而在MyBatis中使用预编译的SQL语句,可以避免SQL注入漏洞,同时也能提高SQL语句的可维护性。

3. 结果集处理:在JDBC中,需要手动处理结果集,将结果集转换为Java对象,而在MyBatis中,可以通过配置文件或注解来声明Java对象与数据库表之间的映射关系,让MyBatis来自动处理结果集。

4. 事务处理:在JDBC中,需要手动开启、提交、回滚事务,而在MyBatis中,只需要在配置文件中设置事务管理器,就可以自动管理事务,简化了事务处理的过程。

5. 缓存处理:在JDBC中,需要手动实现缓存机制,而在MyBatis中,MyBatis提供了一套完善的缓存机制,可以大大简化缓存处理的工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值