首页 > 编程语言 >Java经典框架之MyBatis

Java经典框架之MyBatis

时间:2024-08-30 08:54:34浏览次数:16  
标签:语句 Mapper Java 框架 映射 接口 SQL MyBatis

一、基本介绍

        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 configuration
  PUBLIC "-//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 语句映射:

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

3. 编写 SQL 映射文件

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//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, content
        FROM Blog
        WHERE id = #{id}
    </select>
    
    <select id="selectAllBlogs" resultType="Blog">
        SELECT id, title, author, content
        FROM Blog
    </select>
</mapper>

4. 使用 MyBatis

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

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);
        // 构建 SqlSessionFactory
        SqlSessionFactory 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 的实现,并调用了其中的方法来执行数据库操作。

标签:语句,Mapper,Java,框架,映射,接口,SQL,MyBatis
From: https://blog.csdn.net/a876106354/article/details/141702572

相关文章

  • 浅谈Java loombook框架
    一、基本介绍        Java的LoomProject是一个处于早期开发阶段的项目,旨在为Java平台添加轻量级的协程支持。协程是一种比线程更加轻量级的存在,它可以在一个线程中并发执行多个任务,从而减少上下文切换的开销,并提高系统的吞吐量。        LoomProject提......
  • Java学习笔记11-流程控制语句结构
    一.顺序结构顺序结构顺序结构是最简单的流程控制结构,它按照代码书写的顺序依次执行每一条语句。例如:inta=1,b=2,c=3;System.out.println("a+b="+(a+b));System.out.println("b*c="+(b*c));二.分支结构if分支判断(1).单if条件判断if(条件,条件的......
  • 基于javaweb的城乡居民基本医疗信息管理系统设计与开发论文
    摘  要信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理......
  • 基于javaweb的宠物猫认养系统论文
    摘 要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装宠物猫认养系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,宠物猫认养系统......
  • Java Script网页设计案例
    1.JavaScript网页设计案例下面我将提供一个简单的JavaScript网页设计案例,该案例将实现一个动态的待办事项列表(TodoList)。用户可以在页面上添加新的待办事项,标记它们为已完成,以及删除它们。这个案例将使用HTML来构建页面结构,CSS来美化页面,以及JavaScript来添加动态功能。1.1HTM......
  • Java后端微服务架构下的服务认证机制:Spring Security OAuth
    Java后端微服务架构下的服务认证机制:SpringSecurityOAuth大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务之间的安全认证是一个复杂而重要的问题。SpringSecurityOAuth提供了一套强大的解决方案,通过它,我们可以轻松实现服务的认......
  • Java-时间日期类
            在Java中,处理日期和时间的类主要集中在 java.time 包中,这是自Java8引入的新的日期和时间API。以下是一些常用的类及其方法.1. LocalDateLocalDate 表示不带时区的日期。常用方法示例:importjava.time.LocalDate;importjava.time.format.DateTimeFor......
  • Java LeetCode 练习
        3142.判断矩阵是否满足条件需求:        给你一个大小为mxn的二维矩阵grid。你需要判断每一个格子grid[i][j]是否满足:        如果它下面的格子存在,那么它需要等于它下面的格子,也就是grid[i][j]==grid[i+1][j]。        ......
  • 从匿名内部类到Lambda表达式:Java编程的优雅进化
    匿名内部类首先我们先来介绍一下什么是匿名内部类匿名内部类:java中一种特殊的类定义方式,它允许你在需要实现一个接口或继承一个类的地方直接定义一个该接口或类的匿名子类。若想创建一个派生类的对象,并且对象只创建一次,可以设计为匿名内部类,可以大大简化代码注意:匿名内部类......
  • Java核心API——io类缓冲流
    在前面的学习中我们学习了如何向文件中简单的传输写入数据java将流分为两类节点流与处理流节点流:又称为低级流,特点:实际连接程序与另一端的"管道",负责实际读写数据的流.IO一定是建立在某个低级流的基础上进行的.文件流就是低级流,它们是实际连接程序与文件的管道,负责......