【SpringBoot篇】SpringBoot整合Mybatis实战

news2024/11/26 5:50:28

🎊专栏【SpringBoot】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

  • 🌺Spring Boot和MyBatis的好处
  • 🌺创建工程
    • 🎄报错解决
      • 🎆java: 警告: 源发行版 17 需要目标发行版 17
      • 🎆乱码

在这里插入图片描述
Spring Boot可以非常方便地集成MyBatis来实现对数据库的访问,从而快速搭建项目持久层。如果你也想利用Spring Boot整合MyBatis,本文将为你详细讲解整合过程。

我们将创建一个Spring Boot工程,引入MyBatis相关依赖,编写Mapper接口与SQL映射文件,直接通过接口方法访问数据库。整合后的MyBatis可以自动参与到Spring事务中,让我们只需要注解和SQL就可以实现DAO层的开发。

跟随本文,你将可以掌握Spring Boot下整合MyBatis的配置方法,并通过一个实际案例感受它的强大魔力。这将为后续项目开发奠定坚实基础。

🌺Spring Boot和MyBatis的好处

整合Spring Boot和MyBatis有以下几个好处:

简化配置:Spring Boot提供了自动配置功能,可以根据类路径上的依赖自动配置数据库连接和MyBatis相关的配置,减少了繁琐的XML配置。只需要进行少量的配置,就可以快速启动和运行应用程序。

快速开发:Spring Boot框架提供了很多开箱即用的功能和特性,如自动装配、自动配置、内嵌服务器等,可以快速构建和部署Web应用程序。MyBatis作为一种简单易用的ORM框架,可以方便地进行数据库操作。整合两者可以提高开发效率,快速实现业务逻辑。

灵活性和可扩展性:Spring Boot和MyBatis都是非侵入式的框架,可以与其他框架或技术无缝集成。通过使用Spring Boot的注解和配置,可以轻松地整合其他持久层框架、消息队列、缓存等技术,满足复杂应用的需求。

易于测试:Spring Boot提供了良好的测试支持,可以轻松编写单元测试和集成测试。MyBatis的Mapper接口和SQL语句都可以进行单元测试,可以方便地验证数据访问的正确性。

生态系统丰富:Spring Boot和MyBatis都拥有庞大的社区支持和活跃的开发者社区,提供了大量的文档、教程和示例,解决问题时可以得到快速的帮助和支持。

综上所述,整合Spring Boot和MyBatis可以简化配置、提高开发效率、增加灵活性和可扩展性,同时还能够享受Spring Boot和MyBatis各自的优势和生态系统的支持。这使得开发人员能够更加专注于业务逻辑的实现,快速构建可靠的Web应用程序。

🌺创建工程

创建一个工程
在这里插入图片描述
在这里插入图片描述

删除不必要的东西
在这里插入图片描述
在这里插入图片描述

创建domain包,里面写入Book类
在这里插入图片描述

package com.example.domain;

public class Book {
    private Integer id;
    private String name;
    private String type;
    private String description;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", type='" + type + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}

写入数据层,创建数据层接口BookDao
在这里插入图片描述

在BookDao中写入内容

package com.example.dao;

import com.example.domain.Book;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface BookDao {
    @Select("select * from abc where id=#{1}")  //修改为自己的表名和id
    public Book getById(Integer id);
}

修改properties文件为yml文件

在这里插入图片描述

在yml文件中写入内容

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/abc  //修改为自己的数据库名
    username: root
    password: "1234"   //密码是纯数字的要带上双引号

测试接口

package com.example;

import com.example.dao.BookDao;
import com.example.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Demo7ApplicationTests {

    @Autowired
    private BookDao bookDao;

    @Test
    void testGetById() {
        Book book=bookDao.getById(1);
        System.out.println(book);
    }

}

在这里插入图片描述

运行成功
在这里插入图片描述

🎄报错解决

🎆java: 警告: 源发行版 17 需要目标发行版 17

这是因为springboot版本太高了
我们降低一下就好了
在这里插入图片描述

🎆乱码

运行后发现,之前在yml文件中的中文,运行后变成了乱码

解决方法

在这里插入图片描述
通过本文,我们已经掌握了在Spring Boot中集成MyBatis的方法,很好地结合了两者的优势,实现了DAO层的快速开发。在后续的学习中,我们还可以引入MyBatis的多种高级用法,如逆向工程等。

如果大家在整合过程中还有其他问题,例如事务支持、配置优化等,请在评论区随时与我讨论。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

芯片制造中如何测薄膜厚度?

在半导体制造业中,薄膜的厚度对器件的性能和质量有重要影响。薄膜的厚度决定了许多重要的物理和化学性质,对其折射、反射和透射的光学性质有直接影响,可以导致显著的量子尺寸效应,从而改变材料的电子、光学和磁性等。准确测量和控…

谈京东电商API接口的应用场景及返回值说明(获取商品详情,SKU,desc)

1 背景 京东作为电商平台,近几年用户、业务持续增长,访问量持续上升,随着这些业务的发展,京东API接口应运而生。 API接口,就是为了解放客户端与服务端而存在的。对于客户端,使开放给客户端的接口标准统一…

SI24R1兼容NORDIC通信开发资料

一、友商的nRF24L01不要求芯片底部的金属焊盘接地,Si24R1规格书上也没要求接地,这是因为发射功率较低只有0dbm的情况,当芯片发射功率大于0dbm以后,芯片底部的金属焊盘会有很多白噪声耦合到地,而nRF24L01的参考设计金属…

02-详解SpringAOP 面向切面编程

面向切面编程 AOP思想 Spring的IoC容器可以使软件组件松耦合,Spring的AOP则可以让你能够捕捉系统中经常使用的功能并把它转化成组件 Spring的AOP的实现底层可以在JDK动态代理 CGLIB动态代理两种动态代理中灵活切换,当前也可以通过Spring的配置强制使用CGLIB动态代理 如果代…

微信小程序案例3-1 比较数字

文章目录 一、运行效果二、知识储备(一)Page()函数(二)数据绑定(三)事件绑定(四)事件对象(五)this关键字(六)setData()方法&#xff0…

GitHub黑市曝光,高档刷星6元一颗,最奇葩开源项目97%都是刷的

​梦晨 克雷西 发自 凹非寺 量子位 | 公众号 QbitAI 在黑市买GitHub星星多少钱? 最贵的高达6元一颗。 有创业者Yassin Eldeeeb自掏腰包测试了一把。他足足花20欧元(约156人民币),只买到25颗“高级星星”。 没错,在黑…

最近非常火的电子木鱼流量主小程序源码系统 带完整搭建教程

在当今数字化时代,人们对于休闲娱乐的需求越来越高。近年来,一种结合了传统文化和现代科技的新型休闲娱乐方式——电子木鱼,迅速在年轻人群中流行开来。电子木鱼流量主小程序源码系统的出现,为这种新型娱乐方式提供了更加便捷的途…

在直播系统中使用RTSP协议传递视频

目录 概述 1、环境准备 2、拉流URL地址 3、导播软件取流 (1)OBS中拉取RTSP流 (2)芯象中拉取RTSP流 (3)vMix中拉取RTSP流 写在最后 概述 提到RTSP协议,很容易想到RTMP协议,它…

【Linux】进程状态详解

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 本篇导航 0. 五状态进程模型1. 运行 >> R (running)2. 浅度睡眠 >> S (sleeping)3. 深度睡眠 >> D (disk sleep)4. 暂…

skynet学习笔记01— skynet开发环境搭建(超详细)与第一个skynet程序

00、参考资料 https://blog.csdn.net/qq769651718/category_7480207.html 01、前置准备 开发所在目录 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ pwd /home/mhzzj/work/skynetStudy前置准备 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ sudo apt install lua5…

注册电气工程师证书挂靠有风险吗?考试难度很高是吗?前景怎么样

一.先说证书挂靠问题,毫无疑问,有风险,远的不说咱说说近的, 比如下面这张图 从上面这张图可以看出来,哪怕是2023,还有陆陆续续的人因为挂靠的问题被处罚,所以我的建议是能不挂就不挂&#xff0c…

qt opengl 绘制点、线、三角形、多边形(二)

文章目录 一、相关宏定义参数二、代码及示例图1. 点 LG_POINTS 0x00002. 线 GL_LINES 0x00013. 线 GL_LINE_LOOP 0x00024. GL_LINE_STRIP 0x00035. GL_TRIANGLES 0x00046. GL_TRIANGLE_STRIP 0x00057. GL_TRIANGLE_FAN 0x00068. GL_QUADS 0x00079. GL_QUAD_STRIP 0x000810. GL_…

第八章 Python类(面向对象编程)

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

数票通批量开票小妙招,双11开票不用愁

每年双十一都是电商企业和财务“疯狂”的日子,随着疫情的回暖,消费者的消费能力蹭蹭上涨,商家的口袋盆满钵满,而财务的加班永无休止,批量开票成为财务人摆脱双十一加班的必备技能。 面对双十一狂欢,相信不少…

一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

文章目录 前言第01节 Selenium概述第02节 安装浏览器驱动(以Google为例)第03节 定位页面元素1. 打开指定页面2. id 定位3. name 定位4. class 定位5. tag 定位6. xpath 定位7. css 选择器8. link 定位9. 示例 有道翻译 第04节 浏览器控制1. 修改浏览器窗…

3D目标检测实战 | 图解KITTI数据集评价指标AP R40(附Python实现)

目录 1 准确率和召回率2 P-R曲线的绘制3 AP R11与AP R40标准4 实际案例 1 准确率和召回率 首先给出 T P TP TP、 F P FP FP、 F N FN FN、 T N TN TN的概念 真阳性 True Positive T P TP TP 预测为正(某类)且真值也为正(某类)的样本数,可视为 I o U > I o U t…

3Dmax Vary 渲染 玻璃 水 啤酒 的参数尝试

折射率: 空气折射率为1.0 水折射率一般 1.3 -1.4 ,啤酒折射率一般 1.4-1.55 玻璃折射率 一般 1.5-1.7 金刚石钻石 2.0 透明物体 密度越大 折射率越高。折射:同一束光在不同密度介质传播时发生的 光路弯折。如果密度不断发生变化&#…

C++常用格式化输出

在C语言中可以用printf以一定的格式打印字符,C当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C入门讲解第一篇。  在C中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2…

UE5——源码阅读——4——引擎预初始化

预初始化的开始处理和结束处理 将GEnginePreInitPreStartupScreenEndTime设置为平台的时间 ON_SCOPE_EXIT 这个就是在程序结束后执行一个Lambda,这个弘的目的是简化代码确保正确的时机正确的执行清理操作,降低因资源泄露而导致BUG的概率 处理延迟注册…

【GEE】基于GEE-Landsat8数据集地表温度反演(LST热度计算)

老样子,最近在做生态方面的项目,然后需要分析城市的热岛效应,想了想还是用GEE计算比较简单,直接下载影像太麻烦了。所以在网上看看了资料,踩了踩坑终于是将代码写出来了。秉承着取之于民、用之于民的想法,今…