【Java - 框架 - Mybatis】(02) SpringBoot整合Mybatis操作Mysql - 快速上手

“SpringBoot"整合"Mybatis"操作"Mysql” - 快速上手;

环境

  • Java版本"1.8.0_202"
  • Spring Boot版本"2.5.9"
  • Windows 11 专业版_22621.2428
  • IntelliJ IDEA 2021.1.3(Ultimate Edition)

步骤

步骤A

说明

  • 创建一个"Spring Boot"项目;

图片

(1)

(2)

(3)

步骤B

说明

  • 添加相关依赖项;

图片

(1)

(2)

(3)

代码

<!-- MySQL依赖项,仅运行时需要 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency><!-- Mybatis框架 -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version>
</dependency>

步骤C

说明

  • 创建演示数据库;

图片

(1)

(2)

(3)

代码

【说明】

  • 演示数据库的建库语句;
-- --------------------------------------------------------
-- 主机:                           127.0.0.1
-- 服务器版本:                        10.11.2-MariaDB - mariadb.org binary distribution
-- 服务器操作系统:                      Win64
-- HeidiSQL 版本:                  11.3.0.6295
-- --------------------------------------------------------/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;-- 导出 mybatis-demo 的数据库结构
DROP DATABASE IF EXISTS `mybatis-demo`;
CREATE DATABASE IF NOT EXISTS `mybatis-demo` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci */;
USE `mybatis-demo`;-- 导出  表 mybatis-demo.a 结构
DROP TABLE IF EXISTS `a`;
CREATE TABLE IF NOT EXISTS `a` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(50) DEFAULT NULL COMMENT '用户名',`password` varchar(50) DEFAULT NULL COMMENT '密码',`nick` varchar(50) DEFAULT NULL COMMENT '昵称',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='"Mybatis"测试表';-- 正在导出表  mybatis-demo.a 的数据:~1 rows (大约)
DELETE FROM `a`;
/*!40000 ALTER TABLE `a` DISABLE KEYS */;
INSERT INTO `a` (`id`, `username`, `password`, `nick`) VALUES(1, 'admin', '1234567890', '管理员');
/*!40000 ALTER TABLE `a` ENABLE KEYS */;/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;

步骤D

说明

  • 连接演示数据库;

图片

(1)

(2)

代码

(1)

【说明】

  • 配置数据库相关信息;
# 数据库的URL
spring.datasource.url=jdbc:mysql://localhost:3306/<数据库>?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
# 数据库的账号
spring.datasource.username=<账号>
# 数据库的密码
spring.datasource.password=<密码>

(2)

【说明】

  • 测试数据库连接状态;
// Spring Boot自动读取"application.properties"的配置,并创建了数据源对象
@Autowired
DataSource dataSource;// 连接数据库,用于检查"application.properties"中连接数据库的参数值是的正确
@Test
void testConnection() throws Exception {
// 获取与"MySQL"的连接,此方法的调用会实质的连接数据库
dataSource.getConnection();
System.out.println("数据库连接成功!!!");
}

步骤E

说明

  • 创建映射代码;

图片

(1)

(2)

(3)

(4)

代码

(1)

package com.example.mybatisdemo.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.example.mybatisdemo.mapper")
public class MybatisConfiguration {
}

(2)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- "namespace":即空间命名名称,一般绑定对应接口的全限定路径 -->
<mapper namespace="com.example.mybatisdemo.mapper.DemoMapper">
</mapper>

(3)

mybatis.mapper-locations=classpath:mapper/*.xml

步骤F

说明

  • 进行操作演示;
  • 具体操作代码见此文;

图片

代码

(1)

/*** 统计数据表行数** @return 行数*/
int count();

(2)

<!--int count();-->
<select id="count" resultType="int">SELECTcount(*)FROMa
</select>

(3)

@Autowired
DemoMapper mapper;@Test
void testDemoMapper() {System.out.println(mapper.count());
}

后记

  • 此文所用项目代码文件,需要的请下载;

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

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

相关文章

Java基础面试题整理2024/3/13

1、可以使用switch的数据类型 Java5以前&#xff0c;switch(arg)表达式中&#xff0c;arg只能是byte、short、char、int。 Java5之后引入了枚举类型&#xff0c;也可以是枚举类型。 Java7开始引入了字符串类型。 2、Java中的goto有什么作用 goto是Java中的保留字&#xff0c…

【Rust】——枚举与模式匹配

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

2.案例、鼠标时间类型、事件对象参数

案例 注册事件 <!-- //disabled默认情况用户不能点击 --><input type"button" value"我已阅读用户协议(5)" disabled><script>// 分析&#xff1a;// 1.修改标签中的文字内容// 2.定时器// 3.修改标签的disabled属性// 4.清除定时器// …

Day15 面向对象进阶——接Day14

Day15 面向对象进阶——接Day14 文章目录 Day15 面向对象进阶——接Day14一、访问修饰符二、Object三、深入String的equals()方法四、final 一、访问修饰符 1、含义&#xff1a;修饰类、方法、属性&#xff0c;定义使用的范围 2、经验&#xff1a; 2.1.属性一般使用private修…

JavaScript进阶:js的一些学习笔记

文章目录 1. js作用域2. 函数3. 解构赋值 1. js作用域 作用域规定了变量能够呗访问的范围&#xff0c;离开这个范围&#xff0c;这个变量就不能够被访问到。 局部作用域&#xff1a;可以分为函数作用域和块作用域 块作用域&#xff0c;let 声明会产生块级作用域&#xff0c;va…

武汉星起航:秉承客户至上服务理念,为创业者打造坚实后盾

在跨境电商的激荡浪潮中&#xff0c;武汉星起航电子商务有限公司一直秉持着以客户为中心的发展理念&#xff0c;为跨境创业者提供了独特的支持和经验积累&#xff0c;公司通过多年的探索和实践&#xff0c;成功塑造了一个以卖家需求为导向的服务平台&#xff0c;为每一位创业者…

window python开发环境搭建- Anaconda

window python开发环境搭建- Anaconda 下载Anacnoda配置Anconda验证Anaconda是否安装成功验证 conda 是否安装成功验证 pip 是否安装成功验证 python 是否安装成功 配置镜像源conda 镜像源pip 镜像源 pip 常用命令conda 常用命令 下载Anacnoda anacoda官网地址 https://www.an…

hive库表占用空间大小的命令

1、查每个hive表占用的空间大小 hdfs dfs -du -h /user/hive/warehouse 2、按占用空间大小降序排列 hdfs dfs -du /user/hive/warehouse/ipms.db | sort -nr 3、查某一个分区占用空间大小&#xff08;单位G) hadoop fs -ls /user/hive/warehouse/ipms.db/dw_ft_se_nt_u_gen…

如何在vscode中误删了文件怎么办

一、问题描述 在vscode中误删了文件&#xff0c;遇到了好几次这种情况&#xff0c;今天在网上看到了解决方案&#xff0c;记录一下。 二、解决方案 快捷键&#xff1a;ctrlshiftp 输入命令Find Entry to Restore 既可查看过去文件历史&#xff0c;从里面就能找到删除的文件。

【vue在主页中点击主页面如何弹出一个指定某个页面的窗口】

【vue在主页中点击主页面跳转到某个页面的操作完整过程】 1.首先在主页面中加入一个卡槽用于展示弹出的窗口 代码如下&#xff1a; <el-dialog :visible.sync"dialogVisible1" :close-on-click-modal"false" :title"title" class"dial…

代码随想录算法训练营第八天|344. 反转字符串

344. 反转字符串 已解答 简单 相关标签 相关企业 提示 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#…

[LeetCode][LCR 194]二叉树的最近公共祖先

题目 LCR 194. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 1 输出: 3 解释: 节点 5 和节点 1 的最…

#微信小程序(轮播图以及开发方法)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;轮播图以及正确的开发方法 &#xff08;1&#xff09;有HTML&#xff0c;CSS&#xff0c;javascript基础即可 &#xff08;2&#xff09;写界面一定要查看开发手册&#xff0c;这是微信小程序比较好的地方&#xff0c;由于…

QT----基于QT的人脸考勤系统(未完成)

目录 1 编译opencv库1.1 下载源代码1.2 qt编译opencv1.3 执行Cmake一直卡着data: Download: face_landmark_model.dat 2 编译SeetaFace2代码2.1 遇到报错By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has2.2遇到报错Model missing 3 测试…

机试:成绩排名

问题描述: 代码示例: #include <bits/stdc.h> using namespace std;int main(){cout << "样例输入" << endl; int n;int m;cin >> n;int nums[n];for(int i 0; i < n; i){cin >> nums[i];}// 排序for(int i 0; i < n; i){//…

IP地址无所遁形!试试这个3k星热门开源查询神器!

在日常开发中&#xff0c;我们经常需要查询IP地址的位置信息&#xff0c;比如&#xff1a; 网站统计&#xff1a;统计用户的来源地&#xff0c;了解访问者分布情况&#xff1b;安全防护&#xff1a;根据IP地址判断用户是否来自风险地区&#xff0c;加强安全防护措施&#xff1…

13.7 Map 接口(血干JAVA系列)

这里写目录标题 13.7.1 Map接口简介13.7.2 Map.Entry接口简介13.7.3 Map接口的常用子类1.新的子类&#xff1a;HashMap2.相关操作实例(1)实例操作1——向集合中增加和取出内容【例13.26】增加和取得内容 (2)实例操作2------------ 判断指定的key或value是否存在【例13.27】判断…

VMware16如何克隆虚拟机

目录 克隆虚拟机方式一(在Windows上复制粘贴)克隆虚拟机方式二(使用VM的克隆操作 克隆之前需要关机)修改克隆机的IP和主机名虚拟机快照虚拟机的迁移和删除 克隆虚拟机方式一(在Windows上复制粘贴) 直接拷贝一份你已经安装好的虚拟机 复制到目的主机上 然后用VM就能打开它 甚至…

索引覆盖和索引下推

索引覆盖和索引下推 索引覆盖&#xff08;Covering Index&#xff09;&#xff1a; 在数据库查询优化中&#xff0c;当一个索引包含了SQL查询语句所需要的全部列时&#xff0c;数据库可以直接使用索引来获取所有数据&#xff0c;而无需回表访问实际的数据行&#xff0c;这就实…

egg.js学习记录

1.创建egg项目并启动后端服务器 pnpm create egg //创建项目 //选择simple就行 pnpm i //下载插件 pnpm run dev //运行项目 2.安装跨域依赖和数据库依赖 pnpm i egg-cors //跨域依赖 pnpm i egg-mysql //数据库依赖 pnpm i egg-scripts //部署 3.修改配置…