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

news2024/11/15 10:23:14

“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 mapper
        PUBLIC "-//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">
    SELECT
        count(*)
    FROM
        a
</select>

(3)

@Autowired
DemoMapper mapper;

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

后记

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

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

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

相关文章

VC++ BitBlt函数学习

1 BitBlt BitBlt函数执行与像素矩形相对应的颜色数据的位块传输,从指定的源设备上下文传输到目标设备上下文。 把位块从一个DC传到另一个DC; VC单文档工程,写3句代码如下; void CDeskdcView::OnDraw(CDC* pDC) {CDeskdcDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);//…

mac输入su命令报错如何重置密码

diannao1xiejiandeMacBook-Air ~ % su Password: su: Sorry输入 sudo passwd 命令重置密码即可。

Seata 2.x 系列【10】回滚日志表 undo_log

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 表语句…

[抽象]工厂模式([Abstract] Factory)——创建型模式

[抽象]工厂模式——创建型模式 什么是抽象工厂&#xff1f; 抽象工厂模式是一种创建型设计模式&#xff0c;让你能够保证在客户端程序中创建一系列有依赖的对象组时&#xff0c;无需关心这些对象的类型。 具体来说&#xff1a; 对象的创建与使用分离&#xff1a; 抽象工厂模…

手把手带你实现大模型检索增强生成RAG(一)——数据清洗准备

首先&#xff0c;需要整理一大堆可以用来检索的文本数据&#xff0c;这些数据可以是网页、论文、报告、电影脚本、电视剧脚本等等。这些数据可以是原始的文本数据&#xff0c;也可以是经过清洗、处理过的文本数据。 作为IT打工仔&#xff0c;我从二道贩子处购入一本软考秘籍。…

【Numpy】基础学习:一文了解np.expand_dims的作用、用法

【Numpy】基础学习&#xff1a;一文了解np.expand_dims的作用、用法 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…

电脑闹钟软件哪个好用,电脑闹钟软件推荐助你高效工作

在这个快节奏的社会中&#xff0c;时间对于每个人来说都是宝贵的。如何有效利用时间&#xff0c;提高工作效率成为了现代人所面临的重要问题之一。而电脑闹钟软件作为一款实用的工作助手&#xff0c;可以提醒我们按时完成任务&#xff0c;规划好时间&#xff0c;使我们更加高效…

STC89C52单片机 启动!!!(一)

跑马灯实现 直接上代码 #include<regx52.h> sbit D1P2^0; sbit D2P2^1; sbit D3P2^2; sbit D4P2^3; sbit D5P2^4; sbit D6P2^5; sbit D7P2^6; sbit D8P2^7; void delay(int num){while(num--){} } void led_running(){//从第1盏灯到第8盏灯依次点亮D10;delay(40000);D2…

解决方案:淘宝NPM镜像证书到期导致的安装Node失败

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

宏集案例 | 风电滑动轴承齿轮箱内多点温度采集与处理

前言 风力发电机组中的滑动轴承齿轮箱作为关键的传动装置&#xff0c;承担着将风能转化为电能的重要角色。齿轮箱内多点温度的实时监测可以有效地预防设备故障和性能下降。实时监测齿轮箱内多点温度可以有效地预防设备故障和性能下降。 为了确保风力发电机组的安全稳定运行&a…

HarmonyOS NEXT应用开发之深色模式适配

介绍 本示例介绍在开发应用以适应深色模式时&#xff0c;对于深色和浅色模式的适配方案&#xff0c;采取了多种策略如下&#xff1a; 固定属性适配&#xff1a;对于部分组件的颜色属性&#xff0c;如背景色或字体颜色&#xff0c;若保持不变&#xff0c;可直接设定固定色值或…

数组名结合指针的面试题的讲解

笔试题 第一题&#xff1a; 已知条件&#xff1a; 已知p为结构体指针变量&#xff0c;值为0x100000&#xff0c;并且结构体的大小为20字节&#xff0c;并且打印格式均为%p&#xff0c;%p不会在乎正负数&#xff0c;它会以补码的形式直接打印&#xff0c;0x1为16进制的1。 第一问…

[C++核心编程](九):类和对象——多态**

目录 多态的分类 多态的原理剖析 多态的优点 纯虚函数和抽象类 虚析构和纯虚析构 多态是C面向对象三大特性之一 多态的分类 静态多态 -函数重载和运算符重载属于静态多态&#xff0c;复用函数名 -函数地址早绑定-编译阶段确定函数地址 动态多态 -派生类和虚函数实现运行…

Docker达梦安装

拷贝安装包到 /soft目录下&#xff0c;执行以下命令导入安装包&#xff1a; docker load -i dm8_20230808_rev197096_x86_rh6_64_single.tar 结果显示如下&#xff1a; 启动容器 镜像导入后&#xff0c;使用 docker run 启动容器&#xff0c;启动命令如下&#xff1a; doc…

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --><!-- <my-…

基于电鳗觅食优化算法(Electric eel foraging optimization,EEFO)的无人机三维路径规划(提供MATLAB代码)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化飞行…

UE5 UMG拖拽旋转

需要一个区域接收ButtonDown再在ButtonUp取消作用再在ButtonMove改变值最后tick或者ButtonMove去做动作

Python小设计

1. 五个PPT上的界面打印【print、input函数】 &#xff08;1&#xff09;英雄商城登陆界面 print(英雄联盟商城登录界面 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~…

Day30:安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计

目录 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF题目&源码审计 开发指南-NodeJS-安全SecGuide项目 思维导图 JS知识点&#xff1a; 功能&#xff1a;登录验证&…

EI期刊复现:面向配电网韧性提升的移动储能预布局与动态调度策略程序代码!

适用平台&#xff1a;MatlabYalmipCplex/Gurobi/Mosek 程序提出一种多源协同的两阶段配电网韧性提升策略。在灾前考虑光伏出力不确定性与网络重构&#xff0c;以移动储能配置成本与负荷削减风险成本最小为目标对储能的配置数量与位置进行预布局&#xff1b;在灾后通过多源协同…