SpringBoot3集成Mybatis

文章目录

      • 基础使用代码
        • 1. 创建Spring Boot 3项目并添加依赖
        • 2. 配置数据库连接
        • 3. 创建实体类
        • 4. 创建Mapper接口
        • 5. 创建Service层
        • 6. 创建Controller层
        • 7. 主应用类
      • 踩坑记录
        • 1. 依赖版本不兼容
        • 2. Mapper接口扫描问题
        • 3. 数据库连接问题
        • 4. Java版本问题
      • 心得体会

基础使用代码

1. 创建Spring Boot 3项目并添加依赖

使用Spring Initializr创建一个Spring Boot 3项目,添加以下依赖到pom.xml文件中:

<dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis Spring Boot Starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.2</version></dependency><!-- MySQL 驱动 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>
</dependencies>
2. 配置数据库连接

application.properties文件中添加数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3. 创建实体类

创建一个简单的User实体类:

package com.example.demo.entity;public class User {private Long id;private String name;private Integer age;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}
4. 创建Mapper接口

创建UserMapper接口,使用MyBatis注解来定义SQL查询:

package com.example.demo.mapper;import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface UserMapper {@Select("SELECT * FROM user")List<User> getAllUsers();
}
5. 创建Service层

创建UserService类,调用UserMapper的方法:

package com.example.demo.service;import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getAllUsers() {return userMapper.getAllUsers();}
}
6. 创建Controller层

创建UserController类,提供RESTful接口:

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/users")public List<User> getAllUsers() {return userService.getAllUsers();}
}
7. 主应用类

确保主应用类添加了必要的注解,并且能扫描到Mapper接口:

package com.example.demo;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

踩坑记录

1. 依赖版本不兼容

Spring Boot 3对依赖版本要求较为严格,如果MyBatis相关依赖版本与Spring Boot 3不兼容,可能会导致启动失败或出现各种异常。要确保使用的mybatis-spring-boot-starter版本与Spring Boot 3兼容。

2. Mapper接口扫描问题

若没有在主应用类上添加@MapperScan注解指定Mapper接口的扫描路径,Spring Boot无法自动将Mapper接口注册为Bean,就会抛出No qualifying bean of type异常。

3. 数据库连接问题

要保证数据库服务正常运行,数据库连接信息(如URL、用户名、密码)准确无误。同时,要注意数据库驱动的版本是否与数据库版本兼容。

4. Java版本问题

Spring Boot 3要求Java 17及以上版本,如果使用的Java版本不符合要求,会导致项目无法正常启动。

心得体会

Spring Boot 3集成MyBatis能让开发者更高效地进行数据库操作开发。Spring Boot 3的自动配置机制和强大的依赖管理,结合MyBatis灵活的SQL映射能力,能快速搭建出功能强大的数据库应用。在集成过程中,要特别注意依赖版本的兼容性和配置的准确性,遇到问题时要仔细查看日志,利用官方文档和社区资源来解决。同时,建议多实践,深入理解Spring Boot和MyBatis的原理和使用方法,这样在开发过程中就能更加得心应手。

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

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

相关文章

汽车加气站操作工考试知识点总结

汽车加气站操作工考试知识点总结 加气站基本知识 了解加气站类型&#xff08;CNG、LNG、LPG等&#xff09;及其特点。 熟悉加气站的主要设备&#xff0c;如储气瓶组、压缩机、加气机、卸气柱、安全阀等。 掌握加气站工艺流程&#xff0c;包括卸气、储气、加压、加气等环节。…

88、合并两个有序数组

题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&#xff0c;…

在ubuntu的docker上常用的docker命令

在 Ubuntu 系统上使用 Docker 时&#xff0c;以下是最常用的前 200 个 Docker 命令&#xff0c;并按类别进行分类。这些命令涵盖了 Docker 的基本操作、管理容器、镜像、网络、卷等方面的功能&#xff0c;适用于日常使用和高级管理任务。 1. 基本命令 这些是与 Docker 交互的基…

ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环

ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环 icode练习时遇到卡顿没有思路时怎么办&#xff0c;题目也很难找到不会的那道题&#xff5e;针对这个问题&#xff0c;我们开发了通过“步数”、“积木行数”来快速定位到你不会的题目&#xff5e; 题目会持续更新…

交替序列长度的最大值

1、题目描述 给出n个正整数&#xff0c;你可以随意从中挑选一些数字组成 一段序列S&#xff0c;该序列满足以下两个条件&#xff1a; 1.奇偶交替排列&#xff1a;例如&#xff1a;"奇&#xff0c;偶&#xff0c;奇&#xff0c;偶&#xff0c;奇.…" 或者 "偶&a…

电机试验平台:功能架构与关键技术介绍

电机试验平台作为电机研发、生产和质量控制的核心设备&#xff0c;其设计与应用直接关系到电机性能测试的准确性和效率。随着工业自动化、新能源汽车等领域的快速发展&#xff0c;对电机性能的要求日益提高&#xff0c;电机试验平台的设计也需不断优化以适应多样化需求。以下从…

ubuntu修改时区和设置24小时格式时间

ubuntu修改时区和设置24小时格式时间 一、修改时区二、设置24小时格式时间endl 一、修改时区 使用timedatectl命令更改当前时区为东八区[rootubuntu24-16:~]# timedatectl list-timezones | grep -i shanghai Asia/Shanghai [rootubuntu24-16:~]# timedatectl set-timezone As…

【IP101】图像分割技术全解析:从传统算法到深度学习的进阶之路

图像分割详解 ✂️ 欢迎来到图像处理的"手术室"&#xff01;在这里&#xff0c;我们将学习如何像外科医生一样精准地"切割"图像。让我们一起探索这个神奇的图像"手术"世界吧&#xff01;&#x1f3e5; 目录 &#x1f4d1; 1. 图像分割简介2. 阈…

URL混淆与权限绕过技术

一、漏洞原理 前后端路径解析逻辑不一致 后端框架&#xff08;Spring/Shiro&#xff09;自动处理特殊字符&#xff08;../、//&#xff09;&#xff0c;但鉴权组件&#xff08;如Filter&#xff09;未规范化原始URI。 示例&#xff1a;/system/login/../admin被Filter误判为白…

Redis卸载重装教程

卸载 找到redis安装目录 cmd打开该目录&#xff0c;输入 redis-server --service-uninstall运行结果如下 最后再删除redis文件夹即可&#xff08;如果显示该文件夹已在其他地方被打开而无法删除&#xff0c;可以重启一下电脑&#xff0c;就能正常删除啦&#xff09; 安装R…

使用OpenCV 和 Dlib 实现人脸融合技术

文章目录 引言一、技术概述二、环境准备三、关键代码解析1. 人脸关键点定义2. 获取人脸掩模3. 计算仿射变换矩阵4. 检测并提取人脸关键点5. 颜色校正 四、完整流程五、效果展示六、总结 引言 本文将介绍如何使用Python、OpenCV和dlib库实现人脸融合技术&#xff0c;将一张人脸…

skywalking服务安装与启动

skywalking服务安装并启动 1、介绍2、下载apache-skywalking-apm3、解压缩文件4、创建数据库及用户5、修改配置文件6、下载 MySQL JDBC 驱动7、启动 OAP Serve,需要jkd11,需指定jkd版本,可以修改文件oapService.sh8、启动 Web UI,需要jkd11,需指定jkd版本,可以修改文件oapServi…

计算方法实验四 解线性方程组的间接方法

【实验性质】 综合性实验。 【实验目的】 掌握迭代法求解线性方程组。 【实验内容】 应用雅可比迭代法和Gauss-Sediel迭代法求解下方程组&#xff1a; 【理论基础】 线性方程组的数值解法分直接算法和迭代算法。迭代法将方程组的求解转化为构造一个向量序列&…

G919-GAS软件 JSON格式数据通讯协议-阵列数据解析

G919-GAS软件 JSON格式数据通讯协议-阵列数据解析 版本记录 DateAuthorVersionNote2024.04.07Dog TaoV1.0发布通讯协议。2025.05.06Dog TaoV1.11. 增加了【高速采样】模式下的通讯协议。2. 增加了“软件开发建议”小节。 文章目录 G919-GAS软件 JSON格式数据通讯协议-阵列数据…

TCGA数据库临床亚型可用!贝叶斯聚类+特征网络分析,这篇 NC 提供的方法可以快速用起来了!

生信碱移 贝叶斯网络聚类 CANclust是一种基于贝叶斯的聚类方法&#xff0c;系统性地对基因突变、细胞遗传学信息和临床指标进行联合建模&#xff0c;用于多种模态数据的联合聚类分析&#xff0c;并识别在患者群体中反复出现的特征模式。 个体的遗传与环境背景决定其应对疾病的…

【算法】随机快速排序和随机选择算法

文章目录 1、随机快速排序1.1 什么是随机快排1.2 随机快排的好处 2、随机选择算法 前言&#xff1a; 快速排序就是每次划分前&#xff0c;通过一种方法将一个基准值的位置确定好&#xff0c;再进入不同的部分重复相同的工作以此确定好每个值的位置以达到有序。如果你之前并不了…

网络技术基础,NAT,桥接,交换机,路由器

什么是NAT Network Address Translation&#xff08;网络地址转换&#xff09;&#xff0c;它负责将目标IP或源IP进行了改变&#xff0c;相当于一个中间代理&#xff0c;我们家庭常用的路由器就是一个NAT设备&#xff0c;NAT是为了解决IPv4的IP地址快要耗尽的问题&#xff0c;…

DVWA靶场保姆级通关教程--03CSRF跨站请求伪造

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、low级别的源码分析 二、medium级别源码分析 安全性分析 增加了一层 Referer 验证&#xff1a; 关键点是&#xff1a;在真实的网络环境中&a…

【Ansible自动化运维实战:从Playbook到负载均衡指南】

本文是「VagrantVirtualBox虚拟化环境搭建」的续篇&#xff0c;深入探索Ansible在自动化运维中的核心应用&#xff1a; ✅ Ansible核心技能&#xff1a;Playbook编写、角色&#xff08;Roles&#xff09;模块化、标签&#xff08;Tags&#xff09;精准控制 ✅ 实战场景覆盖&a…

基于STM32、HAL库的STC31-C-R3气体传感器驱动程序设计

一、简介: STC31-C-R3是Sensirion公司推出的一款基于CMOSens技术的CO2传感器,具有以下特点: 测量范围:0-100%体积浓度 I2C数字接口 低功耗设计 高精度和长期稳定性 小尺寸封装(5mm x 5mm) 二、硬件接口: STC31-C-R3 STM32L4xx ---------------------------- VDD (P…