Spring Boot 中的 MyBatis 是什么,如何使用

Spring Boot 中的 MyBatis 是什么,如何使用

简介

MyBatis 是一种流行的 Java 持久化框架,可以将 SQL 查询映射到对象上,并提供了简单易用的 API 来执行 CRUD 操作。Spring Boot 可以与 MyBatis 集成,提供了简化配置和自动化配置的功能,使得使用 MyBatis 变得更加容易。

在本文中,我们将介绍 Spring Boot 中的 MyBatis,包括如何配置和使用 MyBatis,以及如何使用 MyBatis 进行常见的 CRUD 操作。同时,我们还将介绍如何使用 MyBatis 的注解和 XML 配置文件来编写 SQL 查询。

在这里插入图片描述

配置 MyBatis

在 Spring Boot 中使用 MyBatis,我们需要在 pom.xml 文件中添加 MyBatis 和 MyBatis-Spring 的依赖,如下所示:

<dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency>
</dependencies>

接下来,我们需要配置数据库连接信息和 MyBatis 的配置信息。我们可以在 application.properties 文件中指定数据库连接信息,如下所示:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=123456

application.properties 文件中,我们还可以指定 MyBatis 的配置信息,如下所示:

mybatis.config-location=classpath:mybatis-config.xml

在上面的配置中,我们指定了 MyBatis 的配置文件路径为 classpath:mybatis-config.xml。在 MyBatis 的配置文件中,我们可以定义一些 MyBatis 的全局配置,例如是否开启缓存、是否开启延迟加载等。

MyBatis 的基本操作

在配置好 MyBatis 后,我们可以开始使用 MyBatis 进行数据库操作了。MyBatis 提供了两种方式来执行 SQL 查询:XML 配置文件和注解。在下面的示例中,我们将演示如何使用这两种方式来执行 CRUD 操作。

使用 XML 配置文件执行 CRUD 操作

首先,我们需要创建一个 Plain Old Java Object(POJO)类,用来表示数据库中的一条记录。在这个示例中,我们使用 User 类来表示用户信息,如下所示:

public class User {private Long id;private String name;private Integer age;// getters and setters
}

接下来,我们需要创建一个 XML 配置文件,用来定义 SQL 查询和映射关系。在这个示例中,我们创建了一个 UserMapper.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="com.example.mapper.UserMapper"><resultMap id="userMap" type="User"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/></resultMap><select id="getUserById" resultMap="userMap">SELECT * FROM user WHERE id = #{id}</select><select id="getAllUsers" resultMap="userMap">SELECT * FROM user</select><insert id="insertUser">INSERT INTO user (name, age) VALUES (#{name}, #{age})</insert><update id="updateUserById">UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}</update><delete id="deleteUserById">DELETE FROM user WHERE id = #{id}</delete></xml>

在上面的 XML 配置文件中,我们定义了一个 UserMapper 命名空间,并定义了一个 resultMap 元素,用来映射查询结果到 User 对象上。然后,我们定义了一些 SQL 查询和映射关系,包括 getUserByIdgetAllUsersinsertUserupdateUserByIddeleteUserById。这些 SQL 查询可以通过 MyBatis 的 API 进行调用,从而执行相应的操作。

接下来,我们需要创建一个 Mapper 接口,用来定义访问数据库的 API。在这个示例中,我们创建了一个 UserMapper 接口,包含了上述 SQL 查询对应的方法,如下所示:

public interface UserMapper {User getUserById(Long id);List<User> getAllUsers();void insertUser(User user);void updateUserById(User user);void deleteUserById(Long id);}

在上面的 Mapper 接口中,我们定义了五个方法,分别对应上述 SQL 查询。这些方法的名称和参数类型需要与 XML 配置文件中的 SQL 查询对应。

最后,我们可以在 Service 层中调用 Mapper 接口来执行 CRUD 操作。以下是一个简单的示例:

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public User getUserById(Long id) {return userMapper.getUserById(id);}public List<User> getAllUsers() {return userMapper.getAllUsers();}public void insertUser(User user) {userMapper.insertUser(user);}public void updateUserById(User user) {userMapper.updateUserById(user);}public void deleteUserById(Long id) {userMapper.deleteUserById(id);}
}

在上面的 Service 中,我们注入了 UserMapper 接口,并调用相应的方法来执行 CRUD 操作。

使用注解执行 CRUD 操作

除了 XML 配置文件之外,MyBatis 还支持使用注解来定义 SQL 查询。以下是一个使用注解定义 SQL 查询的示例:

@Mapper
public interface UserMapper {@Select("SELECT * FROM user WHERE id = #{id}")User getUserById(Long id);@Select("SELECT * FROM user")List<User> getAllUsers();@Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")void insertUser(User user);@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")void updateUserById(User user);@Delete("DELETE FROM user WHERE id = #{id}")void deleteUserById(Long id);}

在上面的代码中,我们使用注解来定义 SQL 查询,并将 @Mapper 注解用于标记这个接口为 MyBatis 的 Mapper 接口。这些 SQL 查询可以直接通过接口的方法调用来执行。

使用注解定义 SQL 查询可以使代码更加简洁和易读,但是相对于 XML 配置文件,注解的可维护性较差,而且难以复用查询语句。

总结

在本文中,我们介绍了 Spring Boot 中如何集成 MyBatis,并演示了如何使用 XML 配置文件和注解来执行 CRUD 操作。MyBatis 是一种流行的 Java 持久化框架,可以将 SQL 查询映射到对象上,并提供了简单易用的 API 来执行 CRUD 操作。通过 Spring Boot 的自动化配置和简化配置,使用 MyBatis 变得更加容易和便捷。使用 MyBatis 可以使数据库操作变得更加简单和高效,同时也可以使代码更加易读和易维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13893.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矩阵Matrices

目录 矩阵的变换 向量和矩阵 矩阵的变换 房子图形的矩阵变换&#xff08;wiggle动态变换&#xff09; uicontrol的‘style’类型&#xff1a; X house dot2dot(X) theta1 wiggle(X) function dot2dot(X) % DOT2DOT Connect the points from a 2-by-n matrix. X(:,end1) X…

日本 NFT 项目概览与特点总结

日本的 NFT 市场 日本的 NFT 市场起源于与国内动漫和娱乐偶像的合作&#xff0c;重点关注本土文化&#xff0c;文化成为日本 NFT 项目的重要基石。 关键要点&#xff1a; 日本的 NFT 产业具有三个特点&#xff1a;广泛的知识产权&#xff08;IP&#xff09;、低 FUD 水平以及…

pycharm如何给一串中文快捷加引号(方法一)

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 门前冷落鞍马稀&#xff0c;老大嫁作商人妇。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python白银群【此类生物】问了一个Pycharm基础的问题&a…

快速搭建一个美观且易用的 Django 管理后台 —— django-xadmin

Django-xadmin&#xff08;也称为Xadmin&#xff09;是一个第三方的 Django 应用程序&#xff0c;它提供了一系列工具和模板来快速开发基于 Django 的后台管理界面。使用 Django-xadmin 可以用很少的代码就创建出一个强大的、具备实时查看数据、增、删、改等基本操作的 Django …

【C语言初阶(12)】数组(超详解)

文章目录 前言1. 一维数组1.1 一维数组的创建1.2 一维数组的初始化1.3 一维数组的访问1.4 一维数组在内存中的存储 2. 二维数组2.1 二位数组的创建2.2 二维数组的初始化2.3 二维数组的访问 3. 数组越界4. 数组作为函数参数4.1 冒泡排序介绍4.2 冒泡排序函数的设计 5. 数组名6. …

PSI算法经典论文算法概述

文章目录 什么是隐私求交PSIPSI协议分类PSI算法的分类基于哈希函数的PSI算法基于不经意传输&#xff08;OT&#xff09;的 PSI算法基于GC的PSI算法基于公钥加密的PSI算法基于DH的PSI算法基于RSA盲签名的PSI算法基于同态加密的PSI算法 基于差分隐私的PSI算法 总结参考文献 什么是…

利用Python构建宁德时代、比亚迪、隆基绿能股票时间序列预测模型

存货 import tushare as ts # 导包 import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks from scipy.stats import norm import datetime import pandas as pd import seaborn as sns # pip install seaborn import matplotlib.patches …

数据在计算机中的存储——【C语言】

在前面的博客中&#xff0c;我们已经学习了C语言的数据类型&#xff0c;先让我们回顾一下C语言中有哪些数据类型。 目录 C语言的基本内置类型 类型的基本归类 整型在内存中的存储 原码、反码、补码 存储中的大小端 练习 浮点型在内存中的存储 浮点数的存储规则 对引例问…

css基础知识十八:CSS如何画一个三角形?原理是什么?

一、前言 在前端开发的时候&#xff0c;我们有时候会需要用到一个三角形的形状&#xff0c;比如地址选择或者播放器里面播放按钮 通常情况下&#xff0c;我们会使用图片或者svg去完成三角形效果图&#xff0c;但如果单纯使用css如何完成一个三角形呢&#xff1f; 实现过程似乎…

三、Java的运算符

三、运算符 运算符是一种特殊的符号&#xff0c;用以表示数据的运算、赋值和比较等。 3.1、算术运算符 - * / % (前) (后) (前)-- (后)-- % :取余运算 结果的符号与被模数的符号相同 开发中&#xff0c;经常使用%来判断能否被除尽的情况 3.2、赋值运算符 注意&#xff1a;s2…

哈工大计算机网络课程网络层协议详解之:Internet路由BGP协议详解

哈工大计算机网络课程网络层协议详解之&#xff1a;BGP协议详解 在之前的网络层协议中&#xff0c;我们介绍了Internet网络两个自治系统内的路由协议&#xff1a;RIP协议和OSPF协议。这两个协议应该来说是自治系统内协议的两个代表性协议&#xff0c;前一个基于距离向量路由算…

LabVIEW开发空气动力学实验室的采集和控制系统

LabVIEW开发空气动力学实验室的采集和控制系统 在航空航天模拟设施中&#xff0c;通常的做法是准备一种针对当前正在进行的实验的数据采集和控制软件。该软件通常是根据当前要求编辑的更通用程序的修订版&#xff0c;或者可能是专门为该测试编写的自定义程序&#xff0c;具体取…