Spring Boot 整合MyBatis(超详细)
😀前言
本篇博文关于Spring Boot 整合MyBatis,希望你能够喜欢
🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊
文章目录
- Spring Boot 整合MyBatis
- 需求说明/图解
- 综合案例
- 代码+配置实现
- 测试页面效果
- 注意事项和细节说明
Spring Boot 整合MyBatis
需求说明/图解
- 将Spring Boot 和MyBatis 整合
- 查询出一条数据
综合案例
代码+配置实现
- 创建数据库和表
CREATE DATABASE `springboot_mybatis`
use `springboot_mybatis`
CREATE TABLE `monster` (
`id` INT NOT NULL AUTO_INCREMENT,
`age` INT NOT NULL,
`birthday` DATE DEFAULT NULL,
`email` VARCHAR(255) DEFAULT NULL,
韩顺平Java 工程师
`gender` char(1) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`salary` DOUBLE NOT NULL,
PRIMARY KEY (`id`)
) CHARSET=utf8
SELECT * FROM `monster`
insert into monster values(null, 20, '2000-11-11', 'nmw@sohu.com', '男', '牛魔王', 5000.88);
insert into monster values(null, 10, '2011-11-11', 'bgj@sohu.com', '女', '白骨精', 8000.88);
insert into monster values(null, 20, '2020-11-11', 'xhy@sohu.com', '男', '小虎牙', 3000.88);
insert into monster values(null, 18, '2001-06-18', 'xhy@sohu.com', '女', '小狐妖', 8888.88);
-
创建springboot_mybatis 项目-创建maven
pom.xml 需要引入相关依赖.
<!--引入相关的依赖--><dependencies><!--引入web starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--引入mybatis starter, 如果看不到版本,自己手写2.2.2--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><!--引入mysql驱动: 这里使用版本仲裁 8.0.26--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--引入配置处理器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></dependency><!--引入lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--引入test starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!--引入druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency></dependencies>
- 创建resources/application.yml , 配置数据源参数, 并完成Spring Boot 项目启动测试
server:port: 9090
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8username: rootpassword: 123456
- 切换数据源为druid , 修改pom.xml(如果没有mybatis-stater , 加入即可.) , 并加入配置文件com/my/mybatis/config/DruidDataSourceConfig.java , 完成测试
<!--引入druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency>
配置文件com/my/mybatis/config/DruidDataSourceConfig.java
@Configuration
public class DruidDataSourceConfig {@ConfigurationProperties("spring.datasource")@Beanpublic DataSource dataSource() throws SQLException {DruidDataSource druidDataSource =new DruidDataSource();return druidDataSource;}
}
- 创建com/my/mybatis/bean/Monster.java
@Data
public class Monster {private Integer id;private Integer age;//这里通过注解来解决时区问题//GMT 就是格林尼治标准时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date birthday;private String email;private String name;private String gender;private Double salary;
}
- 创建com/my/mybatis/mapper/MonsterMapper.java
//在Mapper接口使用 @Mapper 就会扫描,并将Mapper接口对象注入
@Mapper
public interface MonsterMapper {//方法,根据id返回Monster对象public Monster getMonsterById(Integer id);
}
- 创建springboot_mybatis\src\main\resources\mapper\MonsterMapper.xml , 文件模板从mybatis 官方文档拷贝
<?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.my.springboot.mybatis.mapper.MonsterMapper"><!--配置getMonsterById--><select id="getMonsterById" resultType="com.my.mybatis.bean.Monster">SELECT * FROM `monster` WHERE id=#{id}</select>
</mapper>
8.创建com/my/mybatis/service/MonsterService.java
public interface MonsterService {//根据id返回Monster对象public Monster getMonsterById(Integer id);
}
创建com/my/mybatis/service/impl/MonsterServiceImpl.java
@Service
public class MonsterServiceImpl implements MonsterService {//装配MonsterMapper@Resourceprivate MonsterMapper monsterMapper;@Overridepublic Monster getMonsterById(Integer id) {return monsterMapper.getMonsterById(id);}
}
- 创建com/my/mybatis/controller/MonsterController.java
@Controller
public class MonsterController {//装配MonsterService@Resourceprivate MonsterService monsterService;@ResponseBody@GetMapping("/monster")public Monster getMonsterById(@RequestParam(value = "id") Integer id){return monsterService.getMonsterById(id);}
}
- 修改resources/application.yml , 指定mybatis 的配置参数
server:port: 10000
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8username: rootpassword: 123456mybatis:#指定要扫描的 Xxxmapper.xmlmapper-locations: classpath:mapper/*.xml#通过config-location 可以指定mybatis-config.xml,可以以传统的方式来配置mybatis#config-location: classpath:mybatis-config.xml#我们也可以直接在application.yml进行配置#举例说明1. 比如配置原来的 typeAliases#举例说明2 配置输出底层的原生sqltype-aliases-package: com.my.springboot.mybatis.beanconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#配置mybatis的两种方式的选择: 如果配置比较简单,就直接在application.yml配置即可#如果配置内容比较多,可以考虑单独的做一个mybatis-config.xml
测试页面效果
完成测试, 浏览器: http://localhost:10000/monster?id=1

注意事项和细节说明
- spring boot 整合mybatis 取出的日期, 出现8 小时时差解决方案

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
😁热门专栏推荐
Thymeleaf快速入门及其注意事项
Spring Initailizr–快速入门–SpringBoot的选择
带你了解SpringBoot支持的复杂参数–自定义对象参数-自动封装
Rest 优雅的url请求处理风格及注意事项
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞
相关文章:
Spring Boot 整合MyBatis(超详细)
😀前言 本篇博文关于Spring Boot 整合MyBatis,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力&#x…...
【管理运筹学】第 6 章 | 运输问题(4,表上作业法 |闭回路调整法以及特殊情况 | 产销不平衡的运输问题)
文章目录 引言二、表上作业法2.3 改进的方法 —— 闭回路调整法2.4 表上作业法中的特殊情况(一)无穷多最优解(二)退化 三、产销不平衡的运输问题3.1 产量大于销量3.2 销量大于产量 写在最后 引言 接下来我们学习表上作业法的最后…...
Greenplum实用技巧
一、通过gp_segment_id查看数据倾斜 gp_segment_id是表中的隐藏列,用来标记该行属于哪个segment节点。因此可以基于该隐藏列进行分组查询,获取每个segment的记录数,从而判断表数据的分布是否均匀或有倾斜。 qb#select gp_segment_id, count…...
以物联网为核心的智慧工地云平台:聚集智能技术,实现建筑工地智慧管理
智慧工地云平台源码,智慧工地项目监管平台源码,智慧工地可视化数据大屏源码 智慧工地云平台是将云计算、大数据、物联网、移动技术和智能设备等信息化技术手段,聚集在建筑工地施工管理现场,围绕人员、机械、物料、环境等关键要素&…...
Java项目-苍穹外卖-Day05-Redis技术应用
1.店铺营业状态设置 需求分析和设计 左上角要求是有回显的 所以至少两个接口 1.查询营业状态接口(分为了管理端和用户端) 2.修改营业状态接口 因为管理端和用户端路径不同,所以现在是至少三个接口的 可以发现如果存到表里除了id只有一个…...
linux安装jmeter
linux安装jmeter 部署java1.8 下载jmeter安装包:官网、网盘5.6.2版本 # 解压 rootiZbp1at7nu2rpq4xn4zaf1Z:/opt/jmeter# sudo tar -xzf apache-jmeter-5.6.2.tgz # 加入环境变量 rootiZbp1at7nu2rpq4xn4zaf1Z:/opt/jmeter/apache-jmeter-5.6.2# export JMETER/op…...
【笔记】泛型以及如何绕过泛型定义
泛型定义以及其带来的好处 泛型使类型(类和接口)能够在定义类、接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数为您提供了一种通过不同输入重复使用相同代码的方法。区别在于形式参数的输入是值,而…...
JAVA JNA 调用C接口的三种方式
文章目录 1. 准备一个共享库文件2. JNA姿势1—继承Library接口3. JNA姿势2—直接NativeLibrary.getInstance3. JNA姿势3—Native方法 1. 准备一个共享库文件 test.c #include <stdio.h> int test(char *input){printf("input:%s\n",input);return 0; }libtes…...
StarRocks入门到熟悉
1、部署 1.1、注意事项 需要根据业务需求设计严谨的集群架构,一般来说,需要注意以下几项: 1.1.1、FE数量及高可用 FE的Follower要求为奇数个,且并不建议部署太多,通常我们推荐部署1个或3个Follower。在三个Followe…...
华为AR路由器 典型配置案例——以太网交换
目录 Eth-Trunk 例:配置三层链路聚合 组网需求 操作步骤 检查配置结果 配置脚本 VLAN 举例:配置基于接口划分VLAN,实现同一VLAN内的互通(同设备) 组网需求 操作步骤 检查配置结果 配置脚本 举例ÿ…...
DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件
操作系统内核与云基础软件 鲲鹏软件构成硬件特定软件 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 操作系统内核Linux系统调用Linux进程调度Linux内存管理Linux虚拟文件系统Linux网络子系统Linux进程间通信Linux可加载内核模块Linux设备驱动程序Linu…...
Vue2项目练手——通用后台管理项目第一节
Vue2项目练手——通用后台管理项目 知识补充yarn和npm区别npm的缺点:yarn的优点 npm查看镜像和设置镜像 项目介绍项目的技术栈 项目搭建文件目录 创建路由,引入element-uirouter/index.jsmain.jspages/Users.vuepages/Main.vuepages/Home.vuepages/Login…...
「Vue|网页开发|前端开发」02 从单页面到多页面网站:使用路由实现网站多个页面的展示和跳转
本文主要介绍如何使用路由控制来实现将一个单页面网站扩展成多页面网站,包括页面扩展的逻辑,vue的官方路由vue-router的基本用法以及扩展用法 文章目录 本系列前文传送门一、场景说明二、基本的页面扩展页面扩展是在扩什么创建新页面的代码,…...
【Nginx20】Nginx学习:FastCGI模块(二)缓存配置
Nginx学习:FastCGI模块(二)缓存配置 通过上篇文章的学习,普通的 PHP 与 Nginx 的连接就已经没啥大问题了。一般的网站直接那套配置就够了,这也是 Nginx 非常友好的一面。很多在默认的配置文件中注释掉的内容࿰…...
苹果支付外包开发流程
苹果支付的实现流程主要涉及集成苹果的支付系统——Apple Pay,以及在你的应用中处理支付交易。以下是一个简要的实现流程概述,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.开发者账号…...
银河麒麟V10(Tercel)服务器版安装 Docker
一、服务器环境 ## 查看系统版本,确认版本 cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel)## 操作系统 uname -p aarch64## 内核版本(≥ 3.10) uname -r 4.19.90-21.2.ky10.aarch64## iptables 版本(…...
web、HTTP协议
目录 一、Web基础 1.1 HTML概述 1.1.1 HTML的文件结构 1.2 HTML中的部分基本标签 1.3 URI 和 URL 二.HTTP协议 2.1.HTTP概念 2.2.HTTP协议版本 2.3.HTTP请求方法 2.4.HTTP请求访问的完整过程 2.5.HTTP状态码 2.6.HTTP请求报文和响应报文 2.7.HTTP连接优化 三.HTT…...
达梦SQL书写注意事项
模糊查询 模糊查询like后面的字段要求用单引号引用,不能使用双引号 select * from user where name like %小组 分组查询 select查询的列字段必须在分组中的字段存在 正确: select name,age from user group by name,age 错误: select * f…...
博途1200脉冲输出控制速度轴(轴工艺对象基本配置)
这里的1200脉冲轴,主要用来完成线缆包材绕包时的重叠率控制。关于重叠率的具体概念,这里不再阐述,大家可以看下面的文章链接, 重叠率控制 重叠率控制(算法详细介绍含SCL和梯形图源代码)_RXXW_Dor的博客-CSDN博客产品包装和线缆保护材料的包覆都需要进行材料包装重叠率的控…...
微信小程序 通过setData 给两个变量设置同一个数组时,为什么修改一个变量,另一个会也被修改?
在微信小程序中,使用 setData 方法更新数据时,如果给两个变量设置同一个数组,修改其中一个变量的值会导致另一个变量也被修改的原因是,数组是引用类型的数据,在内存中的存储方式是按引用地址存储。 当你将一个数组赋值…...
clipboardy在Windows环境下的完整部署:PowerShell与二进制回退方案详解
clipboardy在Windows环境下的完整部署:PowerShell与二进制回退方案详解 【免费下载链接】clipboardy Access the system clipboard (copy/paste) 项目地址: https://gitcode.com/gh_mirrors/cl/clipboardy clipboardy是一款强大的跨平台系统剪贴板访问工具&a…...
BilibiliDown完整使用教程:三步搞定B站视频批量下载
BilibiliDown完整使用教程:三步搞定B站视频批量下载 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…...
性价比高的AI应用厂家
核心结论: 当前市面上AI应用厂商众多,但真正能做到“高性价比”的,必须同时满足三个条件:功能覆盖企业核心痛点(管理、销售、运营)、落地效果可量化(降本增效有数据支撑)、成本可控&…...
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学…...
思源宋体CN:零成本打造专业中文排版的终极秘籍
思源宋体CN:零成本打造专业中文排版的终极秘籍 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为字体版权费用发愁?还在寻找既能商用又专业的中文字体&…...
设计工程化实践:将设计思维转化为开发者技能的工具探索
1. 项目概述:当设计思维遇上代码技能最近在GitHub上看到一个挺有意思的项目,叫Arthurescc/design-fusion.skill。光看这个名字,就让我这个在设计和开发交叉领域摸爬滚打了十来年的老手眼前一亮。“Design Fusion”直译是“设计融合”…...
Python量化交易框架解析:从数据到实盘的完整实现
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“ZJHuang915/PythonQuantTrading”。光看名字,很多朋友可能就明白了,这是一个用Python做量化交易的代码仓库。我花了点时间把整个项目翻了一遍,发现它不是一个简单…...
AMD Ryzen嵌入式处理器在COM Express模块上的高性能应用与设计实践
1. 项目概述:当COM Express遇上AMD Ryzen,一次嵌入式设计的性能跃迁 在嵌入式系统设计领域,COM Express(Computer-On-Module Express)模块因其标准化、高集成度和易于扩展的特性,一直是构建紧凑型、高性能嵌…...
两轮车租赁数字化升级:从物联网架构到运营效率提升
1. 两轮车租赁模式升级:从传统痛点看数字化解决方案最近和几个在欧洲做短途出行和即时配送的朋友聊天,大家不约而同地提到了一个趋势:两轮车,特别是电动两轮车的租赁市场,正在经历一场静悄悄但深刻的模式升级。这背后&…...
memtest_vulkan:专业级Vulkan GPU显存稳定性测试工具全解析
memtest_vulkan:专业级Vulkan GPU显存稳定性测试工具全解析 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 在GPU计算和图形处理日益重要的今天&…...
