Java经典框架之MyBatis

news/2024/10/11 11:17:25/

一、基本介绍

        MyBatis 是一个非常流行的 Java 持久层框架,它提供了简单的方法来处理数据库中的数据。MyBatis 可以看作是 JDBC 的一个薄封装,它简化了 JDBC 代码的编写,同时提供了强大的功能,如动态 SQL、映射自定义对象到数据库记录等。

二、核心特性

SQL Mapper: MyBatis 使用 XML 或注解来映射 SQL 语句,这使得 SQL 语句可以与 Java 代码分离,便于管理和维护。

动态 SQL: MyBatis 支持动态 SQL,这意味着 SQL 语句可以根据条件动态地构建,提高了代码的复用性。

高级映射: MyBatis 支持将数据库列映射到 Java 对象的属性,包括但不限于简单类型、自动增长的主键、关联查询等。

配置简单: MyBatis 的配置相对简单,通过 XML 文件或注解可以轻松配置数据源、事务管理器等。

事务支持: MyBatis 支持声明式事务和编程式事务,可以方便地管理数据库事务。

缓存机制: MyBatis 提供了一级缓存和二级缓存,可以显著提高数据访问的性能。

插件机制: MyBatis 允许开发者编写插件来拦截方法调用,实现自定义的功能,如分页、性能监控等。

Spring 集成: MyBatis 可以很容易地与 Spring 框架集成,利用 Spring 的依赖注入和事务管理。

MyBatis-Spring 框架: 这是 MyBatis 和 Spring 的整合版本,提供了额外的集成特性,如自动 SQL 映射和事务管理。

MyBatis Plus: 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

三、使用配置

  • 配置 MyBatis: 创建 MyBatis 的配置文件,配置数据库连接信息、事务管理器等。
  • 创建 Mapper 接口: 定义一个接口,该接口中的方法将与 SQL 语句映射。
  • 编写 SQL 映射文件: 创建 XML 文件,定义 SQL 语句和映射规则。
  • 配置 Mapper 扫描: 配置 MyBatis 扫描 Mapper 接口和 SQL 映射文件的位置。
  • 使用 MyBatis: 通过 Mapper 接口调用数据库操作。

四、简单示例

1. 配置 MyBatis

首先,需要在 mybatis-config.xml 中配置 MyBatis 的基本设置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/your_database"/><property name="username" value="your_username"/><property name="password" value="your_password"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>

2. 创建数据访问对象(DAO)接口

定义一个接口,该接口中的方法将与 SQL 语句映射:

java">public interface BlogMapper {Blog selectBlog(int id);List<Blog> selectAllBlogs();
}

3. 编写 SQL 映射文件

创建 XML 文件,定义 SQL 语句和映射规则:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper"><select id="selectBlog" resultType="Blog">SELECT id, title, author, contentFROM BlogWHERE id = #{id}</select><select id="selectAllBlogs" resultType="Blog">SELECT id, title, author, contentFROM Blog</select>
</mapper>

4. 使用 MyBatis

在应用程序中使用 MyBatis 的 SqlSessionFactoryMapper 接口进行数据库操作:

java">import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.List;public class MyBatisExample {public static void main(String[] args) throws Exception {// 加载 MyBatis 配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 构建 SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建 SqlSession 实例try (SqlSession session = sqlSessionFactory.openSession()) {// 获取 Mapper 接口的实现BlogMapper mapper = session.getMapper(BlogMapper.class);// 调用 Mapper 接口中的方法Blog blog = mapper.selectBlog(1);System.out.println(blog.getAuthor());List<Blog> blogs = mapper.selectAllBlogs();for (Blog blogItem : blogs) {System.out.println(blogItem.getTitle());}}}
}

在这个示例中,我们首先配置了 MyBatis,然后定义了一个 BlogMapper 接口,接着创建了一个 XML 文件来映射 SQL 语句。最后,在 main 方法中,我们创建了一个 SqlSession 实例,通过它获取了 BlogMapper 的实现,并调用了其中的方法来执行数据库操作。


http://www.ppmy.cn/news/1517952.html

相关文章

数据驱动未来:全球热门大数据平台精选

1. 概述 大数据基础服务平台是一种用于管理、存储、处理和分析大量数据的平台。它提供了一系列的大数据处理和分析工具&#xff0c;包括 Hadoop、Hive、HBase、Spark、Flink、Zookeeper、Kafka 等&#xff0c;使得企业和组织能够更好地理解和利用他们的数据。 2. 核心能力 数…

如何尽早地发现并抵御 DDoS 攻击?

近半年&#xff0c;随着软硬件服务的廉价化、规模化&#xff0c;国内外云厂商频繁遭受不明原因的大规模网络攻击&#xff0c;给很多网站带来了不良的影响。其实&#xff0c;DDoS 攻击这把「达摩斯之剑」一直高悬在各家互联网公司的头顶&#xff0c;虽然很多互联网企业对 DDoS 攻…

【如何在MacOS升级ruby版本】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

如何知道当前网卡连接的下位机的IP,通过工具实现

要确定当前网卡连接的下位机的 IP 地址&#xff0c;可以使用以下几种工具和方法来实现。 1. 使用 arp-scan 工具 arp-scan 是一个强大的网络扫描工具&#xff0c;可以用于扫描网络上的设备并显示它们的 IP 和 MAC 地址。 安装 arp-scan&#xff1a; sudo apt update sudo a…

基于Leaflet Legend的图例数据筛选实践-以某市教培时空分布为例

目录 前言 一、关于Leaflet.Legend组件 1、Legend组件的主要参数 2、相关参数 二、Legend图例可视化控制 1、违规教培信息的管理 2、违规培训信息时空可视化及图例渲染控制 3、成果展示 三、总结 前言 在很多的地理时空分析系统中&#xff0c;我们经常会遇到一些需求。…

OSI和TCP/IP参考模型、协议与端口、DNS解析类型、数据封装

目录 1.OSI和TCP/IP参考模型 1.1 为什么要进行网络分层&#xff1f; 1.2 TCP/IP和OSI参考模型 1.3 TCP/IP参考模型对应协议 2.对应协议和端口 3.基于IP的封装 4.DNS解析类型 5.数据封装与解封过程分析 5.1 封装 1.OSI和TCP/IP参考模型 1.1 为什么要进行网络分层&am…

AVL树及其性质

概念 AVL树是一种自平衡二叉搜索树&#xff0c;由G.M. Adelson-Velsky和E.M. Landis在1962年提出。AVL树的特点是任何节点的两个子树的高度最多相差1&#xff0c;这个特性保证了树的平衡&#xff0c;从而保证了树的主要操作&#xff08;如插入、删除和查找&#xff09;的时间复…

【日常记录-Linux】timeout指令

Author&#xff1a;赵志乾 Date&#xff1a;2024-08-30 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 简介 在Linux系统中&#xff0c;timeout是一个常用的命令行工具&#xff0c;用于在指定时间后终止一个命令的执行。该命令通常包含在…