【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射

个人博客:个人主页

个人专栏: Mybatis   

⛳️  功不唐捐,玉汝于成


【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射_第1张图片


目录

前言

正文

一、概述

MyBatis简介

主要特性

1. 动态SQL

2.结果映射

3 .插件机制

二、MyBatis配置文件

1.配置文件结构

数据库连接信息

全局配置

映射器扫描

2.SQL映射文件

SQL语句定义

参数映射和结果映射

结语

我的其他博客


前言

     MyBatis是一款在Java持久化领域广泛应用的框架,其灵活性和可定制性使得开发者能够更加自由地进行数据库操作。通过配置文件和映射文件,MyBatis实现了将Java对象与数据库表之间的映射,简化了数据访问层的开发。在本文中,我们将深入探讨MyBatis的配置和映射文件,带你了解如何配置数据库连接、定义SQL语句,以及如何映射Java对象和数据库表。  

正文

一、概述

MyBatis简介

MyBatis(前身为iBatis)是一种基于Java的持久层框架,用于将对象与关系数据库之间的交互映射更加简单。以下是一些MyBatis的基本概念:

  • ORM框架: MyBatis是一种对象关系映射(ORM)框架,它的主要目标是将数据库中的数据与Java中的对象进行映射,避免了手动编写大量的SQL语句。

  • SQL映射: MyBatis使用XML或注解配置文件来定义SQL映射,将Java方法调用与对应的SQL语句关联起来。

  • 轻量级: MyBatis相对于其他ORM框架来说比较轻量级,学习曲线较低,配置简单,而且不需要强制使用对象继承或注解。

  • 灵活性: MyBatis非常灵活,开发者可以自由控制SQL语句的编写,从而更好地优化和调整数据库操作。

主要特性
1. 动态SQL

MyBatis提供了强大的动态SQL功能,允许在XML文件中编写包含条件判断、循环等逻辑的SQL语句。这使得根据不同条件构建不同的SQL语句成为可能,提高了SQL语句的灵活性。



2.结果映射

MyBatis支持将查询结果映射到Java对象,通过配置映射关系,可以将数据库列与Java对象的属性进行对应。



  
  
  

3 .插件机制

MyBatis的插件机制允许开发者在执行SQL语句的不同阶段插入自定义逻辑,例如对参数进行处理、对结果进行处理等。这种机制可以方便地扩展MyBatis的功能。

// 示例:自定义插件
@Intercepts({
  @Signature(type= Executor.class, method = "update", args = {MappedStatement.class, Object.class})
})
public class MyPlugin implements Interceptor {
  @Override
  public Object intercept(Invocation invocation) throws Throwable {
    // 在SQL执行前后执行自定义逻辑
    return invocation.proceed();
  }
}

 这些主要特性使MyBatis在数据库操作方面具有很高的灵活性和可定制性,适用于各种复杂的数据访问场景。

二、MyBatis配置文件

MyBatis的配置文件是一个重要的组成部分,其中包含了框架的全局配置信息,包括数据库连接、日志、缓存等。以下是一个典型的MyBatis配置文件的结构:

1.配置文件结构



  
  
    
      
      
        
        
        
        
      
    
  

  
  
    
  

  
  
    
    
  

数据库连接信息

元素中配置数据库连接信息,包括数据库驱动、连接地址、用户名和密码。这些信息将用于建立与数据库的连接。

全局配置

元素用于配置一些全局的设置,例如日志实现类、缓存策略等。

映射器扫描

元素用于指定MyBatis应该扫描的映射器文件或映射器类。映射器文件包含了SQL语句的定义,而映射器类则可以通过注解方式定义SQL语句。

2.SQL映射文件

SQL映射文件定义了具体的SQL语句以及与之相关的参数映射和结果映射。以下是一个简单的SQL映射文件的结构:



  
  

  
  
    INSERT INTO users (id, username, email) VALUES (#{id}, #{username}, #{email})
  

  
  
    UPDATE users SET username = #{username}, email = #{email} WHERE id = #{id}
  

  
  
    DELETE FROM users WHERE id = #{id}
  

SQL语句定义