Mybatis

1.mybatis是什么?

Myba是一款优秀的持久层框架
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
MyBatis原来是apache的一个开源项目,叫做ibatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis

MyBatis 是一个开源的持久层框架,它为 Java 程序提供了对关系数据库的操作支持。使用 MyBatis 可以避免传统的 JDBC 编程中繁琐的数据库连接和参数设置,使得数据库操作更加简单和高效。


2.Mybatis的特点

它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低

3.Mybatis的作用

(1)插件机制
  • MyBatis 提供了插件机制,可以通过自定义插件来扩展 MyBatis 的功能。插件可以拦截 MyBatis 的 SQL 执行、参数处理和结果处理等过程,并进行自定义的处理。

(2) 事务管理

  • MyBatis 本身不提供事务管理功能,但是它可以与 Spring 整合使用 Spring 的事务管理功能。通过配置可以将 MyBatis 的 SQL 执行纳入 Spring 的事务管理范畴,从而实现事务控制。

(3)类型处理器

  • 在 Java 和数据库之间进行数据类型的转换时,MyBatis 提供了类型处理器的支持。类型处理器可以将 Java 中的数据类型和数据库中的数据类型进行自动转换,大大简化了数据类型转换的工作。

(4)动态 SQL

  • MyBatis 支持动态 SQL,可以根据条件动态生成不同的 SQL 语句,包括 if、choose、foreach 等标签的支持。

(5) 批量操作

  • MyBatis 支持批量操作,即可以将多个 SQL 操作放在一个批处理中执行,这样可以减少与数据库的交互次数,从而提升效率。

(6)分页查询

  • MyBatis 提供了分页查询的支持,可以通过配置进行分页查询,并且支持各种不同的分页方式,包括基于物理分页和基于逻辑分页等。

4.关键:

(1) 映射文件
  • MyBatis 使用映射文件(Mapper)来配置 SQL 语句和结果映射。映射文件通常采用 XML 格式编写,其中包含了 SQL 语句的定义以及参数与结果的映射关系。

(2) SQL 语句配置

  • 在映射文件中可以定义各种各样的 SQL 语句,包括查询、插入、更新和删除等操作。MyBatis 支持动态 SQL,可以根据条件动态生成不同的 SQL 语句,大大提升了灵活性。

(3)参数映射

  • MyBatis 支持将 Java 对象与 SQL 语句中的参数进行映射,可以直接在 SQL 中引用 Java 对象的属性,而无需手动设置参数。

(4) 结果映射

  • 通过映射文件可以定义如何将 SQL 查询结果映射到 Java 对象上,可以配置各种复杂的映射关系,包括一对一、一对多等关联关系。

(5)SqlSession

  • SqlSession 是 MyBatis 与数据库交互的关键接口,通过 SqlSession 可以执行 SQL 语句并获取执行结果。SqlSession 提供了各种查询、插入、更新和删除等操作的方法。

(6)与 Spring 整合

  • MyBatis 可以与 Spring 框架无缝集成,通过配置可以将 MyBatis 映射文件的管理交给 Spring 容器,并且利用 Spring 的依赖注入管理 SqlSession。

(7) 缓存

  • MyBatis 提供了一级缓存和二级缓存的支持,可以有效地减少数据库访问次数,提升性能。

(8)动态 SQL

  • MyBatis 支持动态 SQL,可以根据条件动态生成不同的 SQL 语句,包括 if、choose、foreach 等标签的支持。

5.优缺点

优点


1、基于SQL语句编程,相当灵活
  SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
2、代码量少
  与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接。
3、很好的与各种数据库兼容
4、数据库字段和对象之间可以有映射关系
  提供映射标签,支持对象与数据库的ORM字段关系映射。
5、能够与Spring很好的集成
1.3.2 缺点
1、SQL语句的编写工作量较大
  尤其当字段多、关联表多时,SQL语句较复杂。
2、数据库移植性差
  SQL语句依赖于数据库,不能随意更换数据库(可以通过在mybatis-config.xml配置databaseIdProvider来弥补),示例:
    <databaseIdProvider type="DB_VENDOR">
        <property name="MySQL" value="mysql"/>
        <property name="SQL Server" value="sqlserver"/>
        <property name="Oracle" value="oracle"/>
    </databaseIdProvider>
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值