Spring Boot与MyBatis的集成应用
Spring Boot与MyBatis的集成应用
大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Spring Boot与MyBatis的集成应用。MyBatis是一款优秀的持久层框架,它消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。通过与Spring Boot的集成,可以更简洁、高效地进行数据库操作。本文将详细介绍如何在Spring Boot项目中集成MyBatis。
一、创建Spring Boot项目
首先,我们需要创建一个Spring Boot项目,可以通过Spring Initializr来快速创建。在项目创建过程中,选择以下依赖:
- Spring Web
- MyBatis Framework
- MySQL Driver
项目创建完成后,我们需要进行一些基础配置。
二、配置数据库连接
在application.properties文件中添加数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis.type-aliases-package=cn.juwatech.entity
mybatis.mapper-locations=classpath:mapper/*.xml
三、创建数据库实体类
接下来,我们创建一个数据库实体类。例如,一个简单的用户实体类:
package cn.juwatech.entity;public class User {private Long id;private String username;private String password;// getters and setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
四、创建MyBatis Mapper接口
接下来,我们创建一个Mapper接口,并定义数据库操作方法。Mapper接口与MyBatis映射文件对应:
package cn.juwatech.mapper;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import cn.juwatech.entity.User;import java.util.List;@Mapper
public interface UserMapper {@Select("SELECT * FROM users")List<User> findAll();User findById(Long id);void insert(User user);void update(User user);void delete(Long id);
}
五、创建MyBatis映射文件
在resources/mapper目录下创建对应的XML映射文件UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.juwatech.mapper.UserMapper"><select id="findById" resultType="cn.juwatech.entity.User">SELECT * FROM users WHERE id = #{id}</select><insert id="insert">INSERT INTO users (username, password) VALUES (#{username}, #{password})</insert><update id="update">UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}</update><delete id="delete">DELETE FROM users WHERE id = #{id}</delete></mapper>
六、创建Service层
在Service层中,我们调用Mapper接口的方法,实现业务逻辑:
package cn.juwatech.service;import cn.juwatech.entity.User;
import cn.juwatech.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> findAll() {return userMapper.findAll();}public User findById(Long id) {return userMapper.findById(id);}public void insert(User user) {userMapper.insert(user);}public void update(User user) {userMapper.update(user);}public void delete(Long id) {userMapper.delete(id);}
}
七、创建Controller层
最后,在Controller层中,我们通过Service层调用业务逻辑,处理HTTP请求:
package cn.juwatech.controller;import cn.juwatech.entity.User;
import cn.juwatech.service.UserService;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMappingpublic List<User> findAll() {return userService.findAll();}@GetMapping("/{id}")public User findById(@PathVariable Long id) {return userService.findById(id);}@PostMappingpublic void insert(@RequestBody User user) {userService.insert(user);}@PutMapping("/{id}")public void update(@PathVariable Long id, @RequestBody User user) {user.setId(id);userService.update(user);}@DeleteMapping("/{id}")public void delete(@PathVariable Long id) {userService.delete(id);}
}
八、总结
通过上述步骤,我们已经完成了Spring Boot与MyBatis的集成应用。从数据库配置、实体类创建、Mapper接口定义到Service层和Controller层的实现,我们完成了一个简单的CRUD示例。
相关文章:
Spring Boot与MyBatis的集成应用
Spring Boot与MyBatis的集成应用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Spring Boot与MyBatis的集成应用。MyBatis是一款优秀的持久层框…...
在昇腾服务器上使用llama-factory对baichuan2-13b模型进行lora微调
什么是lora微调 LoRA 提出在预训练模型的参数矩阵上添加低秩分解矩阵来近似每层的参数更新,从而减少适配下游任务所需要训练的参数。 环境准备 这次使用到的微调框架是llama-factory。这个框架集成了对多种模型进行各种训练的代码,少量修改就可使用。 …...
Kafka 管理TCP连接
生产者管理TCP连接 Kafka生产者程序概览 Kafka的Java生产者API主要的对象就是KafkaProducer。通常我们开发一个生产者的步骤有4步: 第1步:构造生产者对象所需的参数对象。 第2步:利用第1步的参数对象,创建KafkaProducer对象实例…...
electron教程(一)创建项目
一、方式① 根据官网描述将electron/electron-quick-start项目克隆下来并启动 electron/electron-quick-start地址: GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…...
如何在Oracle、MySQL、PostgreSQL上终止会话或取消SQL查询
How to Kill session or Cancel SQL query on Oracle , MySQL, PostgreSQL 数据库维护过程中难免会遇到一些不正常的SQL或会话进程正在占用系统大量资源,临时需要终止查询或kill会话,在Oracle, MySQL, Postgresql数据库中不同的操作。 Oracle KILL会话…...
3、FTL基本工作过程
上文描述了FTL的四大功能,这里简述一下每个功能的含义。 地址转换简述 FTL要维护一个地址转换表,这个转换表是主机读/写硬盘的逻辑地址到硬盘实际物理地址的转换关系。 假如SSD的容量是128G,SSD逻辑块的大小是4KB,那SSD的逻辑块…...
微信小程序的跳转页面
在微信小程序中,要实现从当前页面返回到指定页面的功能,通常不直接使用“返回上一页”的逻辑,而是利用小程序的页面栈管理和navigateBack或者重新定向到目标页面的API。下面我将介绍两种主要的方法: 方法一:使用 navi…...
深入理解 Java 中的线程间通信:`wait()`, `notify()`, `notifyAll()`
引言 在多线程编程中,线程间通信是一个重要且复杂的主题。Java 提供了一套基本的机制来实现线程间通信,即使用 wait(), notify(), 和 notifyAll() 方法。这些方法由 Object 类提供,用于协调多个线程对共享资源的访问。本文将详细介绍这些方法…...
23种设计模式【创建型模式】详细介绍之【单例模式】
23种设计模式【创建型模式】详细介绍之【单例模式】 设计模式的分类和应用场景总结单例模式1. 概述2. 实现方式2.1 饿汉式单例模式2.2 懒汉式单例模式(非线程安全)2.3 懒汉式单例模式(线程安全) 3. 单例模式的优缺点3.1 优点3.2 缺…...
某汽车配件制造公司任职资格体系项目成功案例纪实
——基于岗位特点和核心能力要求,分层分级能力测评,实现个性化人才培养 【客户行业】生产制造;汽车配件制造 【问题类型】任职资格体系建立;人才管理系统 【客户背景】 某汽车配件制造公司是一家专注于汽车配件研发、生产和销…...
【Linux】生物信息学常用基本命令
wget网址用于直接从网上下载某个文件到服务器,当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候,可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…...
React Native V0.74 — 稳定版已发布
嗨,React Native开发者们, React Native 世界中令人兴奋的消息是,V0.74刚刚在几天前发布,有超过 1600 次提交。亮点如下: Yoga 3.0New Architecture: Bridgeless by DefaultNew Architecture: Batched onLayout UpdatesYarn 3 for New Projects让我们深入了解每一个新亮点…...
Python面试宝典第4题:环形链表
题目 给你一个链表的头节点 head ,判断链表中是否有环。如果存在环 ,则返回 true 。 否则,返回 false 。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环…...
Kubernetes (K8s) 底层原理
Kubernetes (K8s) 的底层原理涉及多个关键组件和概念,确保容器化应用程序的自动化部署、扩展和管理。以下是 Kubernetes 的底层原理及其关键组件的详细描述。 核心组件 Etcd 功能:分布式键值存储,用于存储集群的所有数据,包括配置…...
解析Kotlin中的委托(包括类委托,属性委托)【笔记摘要】
1.委托模式 委托模式:操作对象不会去处理某段逻辑,而是会把工作委托给另外一个辅助对象去处理。 例如我们要设计一个自定义类的来实现Set,可以将该实现委托给另一个对象: class MySet<T> (val helperSet: HashSet<T>…...
vue3+ts+uniapp+vite+pinia项目配置
开发环境: node >18,npm >8.10.2,vue < 3.2.31 安装项目 npx degit dcloudio/uni-preset-vue#vite-ts vue3-uniapp 1、引入样式规范 npm add -D eslint eslint-config-airbnb-base eslint-config-prettier eslint-import-resolv…...
大数据开发语言 Scala(四):面向对象编程
目录 1. 概述 2. 面向对象编程的基本概念 2.1 类和对象 2.2 继承和多态 2.3 封装和访问控制 3. 面向对象编程在大数据开发中的应用 3.1 Spark中的面向对象编程 3.2 面向对象编程在数据清洗和预处理中 3.3 面向对象编程在机器学习中的应用 4. 面向对象编程的高级特性 …...
C++ //练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数,为什么?
C Primer(第5版) 练习 14.31 练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数,为什么? 环境:Linux Ubuntu(云服务器) 工具:vim 解释: 因为…...
通配符和正则表达式之间的关系
通配符和正则表达式(正则)都是用于匹配字符串的工具,但它们的复杂性和用途有所不同。下面是它们之间的主要关系和区别: 通配符 通配符主要用于简单的模式匹配,常见于文件系统操作中,例如在命令行中查找文…...
GY-30光照传感器软件I2C方式驱动代码,基于STM32Cube
GY-30光照传感器的具体资料可以去淘宝搜索然后问卖家要,网上也有,所以这里我就不多嘴了。 VCC连接3到5伏电压,根据文件开头的描述在STM32CubeMX中配置好外设。 STM32Cube开发方式就是4个字“简单直接”,直接上代码。 gy30.h #…...
Go语言LLM应用开发框架:统一接口与工具调用实战
1. 项目概述:一个为Go语言量身打造的LLM应用开发框架如果你正在用Go语言构建一个需要集成大语言模型(LLM)的应用,比如一个智能客服机器人、一个代码生成工具,或者一个文档分析系统,那么你很可能已经体会过那…...
湿版摄影风格失效的5个致命误区,第4个连Midjourney官方文档都未披露——基于217组AB测试的权威归因报告
更多请点击: https://intelliparadigm.com 第一章:湿版摄影风格失效的5个致命误区,第4个连Midjourney官方文档都未披露——基于217组AB测试的权威归因报告 为何“wet plate collodion”提示词突然失灵? 在 Midjourney v6.1 及 N…...
Python驱动GitHub Actions状态监控:打造物理信号塔灯实时反馈CI/CD流水线
1. 项目概述与核心价值在团队协作开发中,持续集成与持续部署(CI/CD)的流水线状态是项目健康度的“晴雨表”。我们每天都会频繁地提交代码、触发构建,然后盯着GitHub Actions页面上那些或绿或红的标记。但问题在于,这种…...
别再让Ubuntu20.04时间错乱了!用hwclock和timedatectl搞定硬件时钟时区(附原理详解)
彻底解决Ubuntu 20.04时间同步问题:硬件时钟与系统时钟的深度调校指南 每次重启电脑后,系统时间总是不准?在Windows和Ubuntu双系统间切换时,时间显示总是莫名其妙差8小时?这些困扰Linux用户多年的"时间错乱"…...
泛微E-Office V10 OfficeServer 文件上传漏洞深度剖析与实战复现
1. 漏洞背景与影响范围 泛微E-Office作为国内广泛使用的协同办公系统,其V10版本中的OfficeServer.php组件存在高危文件上传漏洞。这个漏洞的本质在于服务端未对上传文件的类型、内容及路径进行严格校验,导致攻击者可以绕过常规防护机制,直接上…...
Taotoken 用量看板如何帮助团队清晰追踪与优化 API 调用成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 用量看板如何帮助团队清晰追踪与优化 API 调用成本 对于依赖大模型 API 进行开发的团队而言,成本控制与资源分…...
大语言模型记忆增强框架:LightMem原理、实现与工程实践
1. 项目概述:当大模型遇上“记忆”瓶颈最近在折腾大语言模型(LLM)应用开发的朋友,估计都遇到过同一个头疼的问题:模型记不住事儿。你精心设计了一个对话系统,希望它能记住用户的历史偏好,比如“…...
Jsxer:Adobe JSXBIN反编译器的终极技术指南
Jsxer:Adobe JSXBIN反编译器的终极技术指南 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 在Adobe创意生态系统中,JSXBIN格式作为ExtendScript脚本的二进制加密格式&#x…...
WarcraftHelper终极指南:5步解决魔兽争霸3闪退与兼容性问题
WarcraftHelper终极指南:5步解决魔兽争霸3闪退与兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3闪退问题烦恼吗…...
星露谷物语SMAPI模组加载器:5分钟快速上手指南与完整使用教程
星露谷物语SMAPI模组加载器:5分钟快速上手指南与完整使用教程 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 你是否曾经因为星露谷物语模组安装复杂、冲突不断而感到困扰?今…...
