【框架篇】MyBatis 介绍及使用(详细教程)

这篇具有很好参考价值的文章主要介绍了【框架篇】MyBatis 介绍及使用(详细教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,MyBatis 介绍

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

简单来说,MyBatis是一个开源的持久层框架,它提供了一种简单且强大的方式来与关系型数据库进行交互。MyBatis通过使用XML或注解来定义数据库操作,并通过原生的SQL查询语句与数据库进行交互。

总之,MyBatis是一个轻量级、易于学习且功能强大的持久层框架,适用于各种规模的Java应用程序。它通过简化数据库访问的过程,提高了开发效率和代码的可维护性。MyBatis官网地址


二,MyBatis 用途

对于后端开发来说。程序是由后端程序和数据库这两个重要的部分组成的,而这两个重要的组成部分要通讯,需要依靠数据库连接工具。

而数据库连接工具有哪些呢? 常用来作为数据库连接工具的有JDBC,但是 JDBC 的操作步骤比较繁琐。

JDBC 的操作步骤主要分为以下几步:

  1. 创建一个数据源对象
  2. 设置数据源对象的属性
  3. 通过数据源对象获取数据库连接对象
  4. 构造SQL执行语句
  5. 通过连接对象创建预编译的SQL语句执行对象
  6. 执行SQL语句,并获取结果集
  7. 释放结果集,预编译的SQL语句执行对象和数据库连接对象

使用 JDBC 进行数据库表查询操作具体实现代码:

//导入java.sql包中的相关类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//导入javax.sql包中的相关类
import javax.sql.DataSource;

//导入com.mysql.cj.jdbc包中的MysqlDataSource类
import com.mysql.cj.jdbc.MysqlDataSource;


public class JDBCSelectDemo {
    public static void main(String[] args) throws SQLException {
        //创建一个数据源对象
        DataSource dataSource = new MysqlDataSource();

        //设置数据源对象的属性
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/itcast?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

        //通过数据源对象获取数据库连接对象
        Connection connection = dataSource.getConnection();

        //准备SQL查询语句
        String sql = "select * from student";

        //通过连接对象创建预编译的SQL语句执行对象
        PreparedStatement statement = connection.prepareStatement(sql);

        //执行SQL查询,并获取查询结果集
        ResultSet resultSet = statement.executeQuery();

        //遍历查询结果集,输出每一条记录的id和name字段值
        while(resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id = " + id + ", name = " + name);
        }

        //关闭查询结果集、预编译的SQL语句执行对象和数据库连接对象
        resultSet.close();
        statement.close();
        connection.close();
    }
}

从上述代码和操作流程可以看出,对于 JDBC作为数据库连接工具来说,整个操作流程是非常的繁琐,我们不但要拼接每一个参数,而且还要按照模板代码的方式,一步步的操作数据库,并且在每次操作完数据库后,还要进行手动关闭连接等,最主要的还是所有的这些操作步骤都需要在每个方法中重复书写,导致代码冗余和增加了代码的工作量。

那有没有一种方法,可以更简单、更方便的操作数据库呢?

当然是有的,使用MyBatis就可以很好地解决上述的问题,它可以帮助我们更方便,更快速的操作数据库。


三,MyBatis 使用

MyBatis 的使用分为两部分,分别为:MyBatis开发环境的配置使用MyBatis模式和语法操作数据库

1,数据库和数据表的创建

1.1,数据库和数据表创建
-- 创建数据库
drop database if exists itcast;
create database itcast DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据
use itcast;

-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(
    id int primary key auto_increment,
    username varchar(100) not null,
    password varchar(32) not null,
    photo varchar(500) default '',
    createtime timestamp default current_timestamp,
    updatetime timestamp default current_timestamp,
    `state` int default 1
) default charset 'utf8mb4';

-- 添加一个用户信息
INSERT INTO `itcast`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES 
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);

2,MyBatis开发环境的配置

2.1,添加MyBatis框架支持

添加MyBatis框架支持分为两种情况,一种情况是对自己之前的 Spring 项目进行升级,另一种情况是创建一个全新的 MyBatis 和 Spring Boot的项目,下面分别来演示这两种情况的具体实现。

新项目添加MyBatis框架支持流程:

1,创建Spring Boot 项目,注意标记的两个属性选项。

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端

2,选择项目版本为2.7.14,并勾选MyBatis FrameworkMySQL Driver 这两个框架支持。

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端

老项目添加MyBatis框架支持流程:

1,在老项目的pom.xml文件中添加MyBatis框架依赖,框架依赖为:

<!-- 添加 MyBatis 框架 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
<!-- 添加 MySQL 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
    <scope>runtime</scope>
</dependency>

2,添加依赖后,重新加载项目

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


2.2,设置MyBatis配置信息

1)设置数据库连接的相关信息

在配置文件 application.yml 中设置数据库连接的相关信息,配置如下:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncoding=utf8&useSSL=false
    username: root
    password: '123456'
    driver-class-name: com.mysql.cj.jdbc.Driver

注意说明:如果使用的mysql-connector-java是 5.x 版本之前,driver-class-name的参数值应设置为com.mysql.jdbc.Driver,如果版本大于5.x,driver-class-name的参数值应设置为com.mysql.cj.jdbc.Driver

2)设置MyBatis xml保存路径

设置MyBatis xml保存路径,xml 文件中保存是对数据库的具体操作SQL,配置如下:

mybatis:
  mapper-locations: classpath:mybatis/*Mapper.xml

3)启动MyBatis项目

在设置好MyBatis配置信息后,运行启动MyBatis项目,观察能否成功运行,如果项目成功运行,说明配置成功。

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


3,MyBatis开发流程

3.1,根据xml保存路径创建包

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


3.2,添加实体类对象

在 Java 目录下创建一个实体类包用来存放各种实体类,其中就包含UserEntity实体类。

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端

添加UserEntity 实体类代码:

package com.example.mybatis.entity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class UserEntity {
    private int id;
    private String username;
    private String password;
    private String photo;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

3.3,添加 mapper 接口

数据库持久层UserMapper接口定义代码:

package com.example.mybatis.mapper;
import com.example.mybatis.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
    List<UserEntity> getAll();
}

注意说明:创建好UserMapper类后立即在类上添加@Mapper注解,该注解源自org.apache.ibatis.annotations.Mapper

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


3.4,添加 mybatis xml 文件

为了数据库持久层的实现,需要添加对应的MyBatis框架的XML映射文件,MyBatis的XML映射文件固定格式如下:

<?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="">

</mapper>

为了更好地理解上述内容,举个例子:UserMapper.xml查询所有用户的具体实现,实现代码如下:

<?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="com.example.mybatis.mapper.UserMapper">
    <select id="getAll" resultType="com.example.mybatis.entity.UserEntity">
        select * from userinfo
    </select>
</mapper>

实现代码说明:

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端

  • namespace属性用于指定映射器接口的完全限定名,它是与此映射器文件相关联的映射器接口的唯一标识,形式为全包名.类名

  • id属性指定了语句的唯一标识符,与接口中定义的方法名称⼀样的,表示对接口的具体实现方法。

  • resultType属性指定了查询结果的类型。在这个例子中,查询结果的类型是com.example.mybatis.entity.UserEntity

综上所述,这个示例的目的是定义了一个名为getAll的查询语句,它将查询数据库中的userinfo表,并将结果映射为com.example.mybatis.entity.UserEntity类型的对象。

通过这个映射文件,可以让MyBatis框架自动生成相应的SQL查询代码,方便在 Java 程序中调用和使用。


3.5,添加 Service 服务层

添加 Service 服务层,示例具体实现代码如下:

package com.example.mybatis.service;
import com.example.mybatis.entity.UserEntity;
import com.example.mybatis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public List<UserEntity> getAll(){
        return userMapper.getAll();
    }
}

实现代码说明:在Service类(服务层)中注入Mapper接口(持久层),并在Service类中调用Mapper接口中的具体方法。


3.6,添加 Controller 控制层

添加 Controller 控制层,示例具体实现代码如下:

package com.example.mybatis.controller;
import com.example.mybatis.entity.UserEntity;
import com.example.mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/getAll")
    public List<UserEntity> getAll(){
        return userService.getAll();
    }
}

实现代码说明:在Controller类(控制层)中注入Service(服务层),并在Controller类中调用Service类中的具体方法。


4,MyBatis查询数据库测试

4.1,项目运行启动

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


4.2,数据库记录信息

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


4.3,浏览器地址栏输入

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


4.4,Postman工具检测

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端


四,MyBatis 流程

1,MyBatis 查询数据库流程

MyBatis 在进行查询数据库操作的执行流程主要为:

  1. 配置数据源:在MyBatis中,首先需要在配置文件中配置数据源,以便连接到数据库。通常是可以通过使用连接池或者直接配置数据库连接信息连接。
  2. 创建映射文件:MyBatis使用XML文件来定义数据库操作语句和映射关系。创建一个映射文件,它包含了数据库查询、插入、更新和删除等操作的语句,以及将结果映射到 Java对象的规则。
  3. 创建映射接口:为每个映射文件创建一个对应的 Java接口,接口中定义了与映射文件中相同的操作方法。
  4. 配置映射关系:在MyBatis的配置文件中,将映射文件和映射接口进行关联,指定它们的路径和命名空间。
  5. 注入Mapper接口:在需要使用查询功能的类中,通过依赖注入(比如@Autowired)方式注入Mapper接口的实例。
    • Controller 类中注入Service 类对象,Service类中注入 Mapper 接口。
  6. 调用Mapper接口进行查询:通过注入的Mapper接口实例调用定义的查询方法,将参数传递给方法并执行查询操作。
    • Controller 类(控制层)中调用 Service类(服务层),而Service类(服务层)中调用Mapper类接口(持久层)。
  7. 处理查询结果:根据查询的需求和Mapper接口方法的返回类型,对查询结果进行处理。可以返回单个对象、列表、映射结果等。
    • 查询结果从Mapper持久层中返回至Service,再从Service服务层中返回至Controller,最后再从Controller控制层返回至前端。

2,MyBatis 框架交互流程图

MyBatis 在整个框架中的定位,框架交互流程图:

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端

注意说明:MyBatis 是一个ORM框架,ORM (Object Relational Mapping),即对象关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的互相转换。

对象关系映射主要完成两步操作,分别为将输入数据(传入对象)+ SQL 映射成原生SQL以及将结果集映射为返回对象(输出对象)。


结语

这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

【框架篇】MyBatis 介绍及使用(详细教程),Java EE【进阶】,mybatis,java,后端文章来源地址https://www.toymoban.com/news/detail-632404.html


到了这里,关于【框架篇】MyBatis 介绍及使用(详细教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第三天)动态SQL

    昨天我们深入学习了 Mybatis的核心对象SqlSessionFactoryBuilder , 掌握MyBatis核心配置文件以及元素的使用 ,也掌握MyBatis映射文件及其元素的使用。那么今天我们需要掌握的是更加复杂的查询操作。 学会编写MyBatis中动态SQL 学会MyBatis的条件查询操作 学会MyBatis的更新操作 学会MyBati

    2024年02月11日
    浏览(48)
  • (第十一天)初识SpringMVC SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

    今天我们要来学习一下SSM框架的最后一个框架SpringMVC 一、初认SpringMVC 基本概念: ​ Spring MVC(Model-View-Controller)是一个用于构建Java Web应用程序的开源框架,它提供了一种基于MVC架构的方式来开发Web应用 。 ​ SpringMVC是Spring Framework的一部分,它是一种基于模型-视图-控制器(

    2024年02月07日
    浏览(67)
  • 【框架篇】Spring MVC 介绍及使用(详细教程)

    MVC(Model-View-Controller)是一种常见的软件设计模式,用于将应用程序的逻辑分离成三个独立的组件: 模型(Model) :模型是应用程序的数据和业务逻辑的表示。它负责处理数据的读取、存储和操作,以及业务规则的处理。模型通常是独立于用户界面的,可以在不同的视图和控

    2024年02月14日
    浏览(44)
  • Java EE开发系列教程 - 使用EJB组件与JPA层交互

    因为之前JPA原生 property 属性在Wildfly实现中并不总是生效,所以这里换成了Wildfly默认的JPA实现,即Hibernate。把属性改成了Hibernate专有的。 hibernate.hbm2ddl.auto 定义是否自动生成表, create-and-drop 意为如果表存在,则删除后再创建。 hibernate.dialect 用来指定数据库厂商,以根据不同

    2024年04月13日
    浏览(33)
  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(49)
  • 特性介绍 | MySQL 测试框架 MTR 系列教程(二):进阶篇 - 内存/线程/代码覆盖率/单元/压力测试

    作者:卢文双 资深数据库内核研发 序言: 以前对 MySQL 测试框架 MTR 的使用,主要集中于 SQL 正确性验证。近期由于工作需要,深入了解了 MTR 的方方面面,发现 MTR 的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因

    2024年02月03日
    浏览(47)
  • 【Java EE】Spring介绍

    参考资料spring中文文档 Spring是一个JavaEE轻量级的一站式开发框架。 它提供的功能涵盖了JavaEE程序中的表示层,服务层,持久层功能组件。这意味着,单单Spring框架就可以满足整个JavaEE程序的开发。 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1、基于POJO的轻量

    2024年02月06日
    浏览(48)
  • 【框架篇】Spring Boot核心介绍及项目创建(详细教程)

    Spring Boot 是基于 Spring 开发的一种轻量级的全新框架,不仅继承了 Spring 框架原有的优秀特性,而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。通过 Spring Boot ,可以轻松地创建独立的,基于生产级别的和基于 Spring 的应用程序。 Spring 的诞生是为了简化

    2024年02月16日
    浏览(40)
  • 【Java系列】Mybatis-Plus 使用方式介绍

    Mybatis-Plus 提供了多种方式来执行 SQL,包括使用注解、XML 映射文件和 Lambda 表达式等。其中,使用 Lambda 表达式是 Mybatis-Plus 推荐的方式,因为它更加直观和类型安全。 以下是一个使用 Lambda 表达式执行 SQL 的示例,现在我们有一个名为  User  的实体类,其中包含  id 、 name  

    2024年02月07日
    浏览(91)
  • 【Java系列】Mybatis-Plus 使用介绍二

    你只管努力,其他交给时间,时间会证明一切。 MyBatis-Plus 是 MyBatis 的增强工具,它简化了 MyBatis 的开发,并提供了许多实用的功能和工具类。下面是 MyBatis-Plus 的使用方法: 在 Maven 项目中,需要在 pom.xml 文件中添加如下依赖: 其中  mybatis-plus-boot-starter  是 MyBatis-Plus 的 S

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包