Spring Boot整合MyBatis
准备工作
1、创建SpringBoot项目,以及在pom.xml中添加如下依赖
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
2、新建domain子包,然后再新建两个实体类(Comment、Article)
public class Comment {private Integer id;private String content;private String author;private Integer aId;//添加set 、get、 toString}
public class Article {private Integer id;private String title;private String content;private List<Comment> commentList;//添加set 、get、 toString}
3、整合Druid:
导入Druid对应的starter:
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version>
</dependency>
在application.properties中添加数据库连接配置和第三方数据源配置
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/springbootdata?serverTimezone=UTC
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.initialSize=20
spring.datasource.druid.minIdle=10
spring.datasource.druid.maxActive=100
测试是否整合成功
@Autowired
private DruidDataSource dataSource;@Test
public void testDruidDataSource() {System.out.println(dataSource.getMaxActive());}
使用注解方式访问数据
1.创建mapper子包及Mapper接口文件
@Mapper
public interface CommentMapper {@Select("SELECT * FROM t_comment WHERE id =#{id}")public Comment findById(Integer id);@Insert("INSERT INTO t_comment(content,author,a_id) " +
"values (#{content},#{author},#{aId})")public int insertComment(Comment comment);@Update("UPDATE t_comment SET content=#{content} WHERE id=#{id}")public int updateComment(Comment comment);@Delete("DELETE FROM t_comment WHERE id=#{id}")public int deleteComment(Integer id);}
提示:如果接口文件过多,可以在启动类上添加@MapperScan(“接口文件所在的包名”),不必再接口文件上添加@Mapper.
2.编写测试方法进行整合测试
控制台显示SQL:
logging.level.你的Mapper包=日志等级
例如:logging.level.com.itheima.myblog.mapper=debug
@Autowired
//会报错,但不影响执行,可以在Mapper接口中添加//@Component(“commentMapper”)
private CommentMapper commentMapper;@Test
public void selectComment() {Comment comment = commentMapper.findById(1);System.out.println(comment);}
关联对象没有查询出来,如下图
原因:实体类叫aId,数据表叫a_id,名称不一致,导致映射不成功。
解决方法:因为aId按驼峰命名的,所以开启驼峰命名匹配映射
mybatis.configuration.map-underscore-to-camel-case=true
使用配置文件方式访问数据
1.创建Mapper接口文件:@Mapper
@Mapper
public interface ArticleMapper {public Article selectArticle(Integer id);public int updateArticle(Article article);}
2.创建XML映射文件:编写对应的SQL语句
创建文件夹mapper,不是资源文件夹,如下图
<?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="com.itheima.mapper.ArticleMapper"><!-- 1、查询文章详细(包括评论信息) --><select id="selectArticle" resultMap="articleWithComment">SELECT a.*,c.id c_id,c.content c_content,c.authorFROM t_article a,t_comment cWHERE a.id=c.a_id AND a.id = #{id}</select><resultMap id="articleWithComment" type="Article"><id property="id" column="id" /><result property="title" column="title" /><result property="content" column="content" /><collection property="commentList" ofType="Comment"><id property="id" column="c_id" /><result property="content" column="c_content" /><result property="author" column="author" /></collection></resultMap><!-- 2、根据文章id更新文章信息 --><update id="updateArticle" parameterType="Article">UPDATE t_article<set><if test="title !=null and title !=''"> title=#{title},</if><if test="content !=null and content !=''">content=#{content}</if></set>WHERE id=#{id}
</update></mapper>
3.在全局文件中配置XML映射文件路径以及实体类别名映射路径
#配置MyBatis的xml配置文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
#设置XML映射文件中的实体类别名的路径
mybatis.type-aliases-package=com.itheima.domain
4.编写测试方法进行整合测试
@Autowired
private ArticleMapper articleMapper;@Test
public void selectArticle() {Article article = articleMapper.selectArticle(1);System.out.println(article);}
动手试一试
使用XML方式访问数据,实现在数据库中增加文章和删除文章功能
相关文章:
Spring Boot整合MyBatis
准备工作 1、创建SpringBoot项目,以及在pom.xml中添加如下依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version> </depend…...
【第22节】windows网络编程模型(WSAAsyncSelect模型)
目录 引言 一、WSAAsyncSelect模型概述 二、WSAAsyncSelect模型流程 2.1 自定义消息 2.2 创建窗口例程 2.3 初始化套接字 2.4 注册网络事件 2.5 绑定和监听 2.6 消息循环 三、完整示例代码 引言 在网络编程的广袤天地中,高效处理网络事件是构建稳定应用的…...
RTD2525BE《HDMI转EDP,DP转EDP》显示器芯片
一、产品概述 瑞昱RTD2525BE是一款专为高端显示设备设计的多接口转换芯片,支持HDMI 2.0与DisplayPort(DP)1.4双输入,并高效转换为嵌入式DisplayPort(eDP)输出。该芯片集成先进信号处理技术,支持…...
【贝叶斯定理(Bayesian Theorem)】
贝叶斯定理(Bayesian Theorem)是概率论中一个革命性的工具,它将主观信念与客观数据结合,形成了独特的贝叶斯统计体系。以下我们将从数学原理、哲学内涵、实际应用三个维度进行深度解析。 一、贝叶斯定理的数学本质 1. 核心公式的…...
Docker逃逸
判断是否再docker中 1.ls -a / (查看c根目录查看是否有docker配置文件) 2.查看进程 如果在要逃逸到真实环境中: 特权模式进行docker逃逸:管理员执行eddocker run--privileg,如何判断是否是特权模式() 特权模式以…...
kotlin 函数引用
引言 先确认一下,什么叫做引用 Object obj new Object() //这里的obj就是一个强引用 再确认一个结论: lambda 属于函数类型对象 。 fun methodResponseResult(msg: String , respo:(Int, String)->Unit){}fun methodRespoResunt(type: Int ,msg: S…...
Linux | 安装 Samba将ubuntu 的存储空间指定为windows 上的一个磁盘
01 安装 samba 文件来实现。比如把我们 ubuntu 的存储空间指定为我们 windows 上的一个磁盘,然后我们在这个磁盘里面创建 .c 文件,进行我们代码的修改和编写,可以安装 samba 文件来实现。 samba 是一种网络共享服务,可以通过网络访问我们指定的文件夹 02 第一步:下…...
Linux小知识
1. /etc目录 我们在配置文件中一直会调用 /etc目录 cd /etc/xxxx.conf etc的全称是editable configuration(其中一种说法)意为可编辑的配置;此目录主要用来存放系统的配置文件和初始化文件的;像网络配置 用户信息 各种服务的配置…...
冒排排序相关
先说一个阿里云学生无门槛免费领一年2核4g服务器的方法: 阿里云服务器学生无门槛免费领一年2核4g_阿里云学生认证免费服务器-CSDN博客 当谈到排序算法时,冒泡排序(Bubble Sort)是最简单且最基础的排序算法之一。它的原理是依次比…...
SQLMesh SCD-2 时间维度实战:餐饮菜单价格演化追踪
场景背景:动态菜单价格管理 考虑某连锁餐厅的菜单管理系统,需要记录食品价格的历史变更轨迹。业务需求包括: 记录每次价格调整的时间点支持历史价格查询(如"2020年1月2日汉堡多少钱")维护当前有效价格清单…...
深入分析和讲解虚拟化技术原理
随着云计算和大数据技术的飞速发展,虚拟化技术应运而生,成为数据中心和IT基础设施的重要组成部分。本文将深入分析虚拟化的基本原理、主要类型以及在实际应用中的意义。 一、虚拟化技术的定义 虚拟化技术是通过软件将物理硬件资源抽象成虚拟资源的技术&…...
再探C语言(1)
温馨提示: 学C语言就像玩《掘地求升》——你以为懂了语法就能通关? 不!编译器会用铁锤教你做人!(╯‵□′)╯︵┻━┻ 🐱Part 1:sizeofの跨平台迷惑行为 Q1. 不同环境下sizeof(int)的结果 运行环境结果&a…...
#echarts#折线图#饼图
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>折线图</title> </head> <body><div id"app" style"width:100%;height:100%;"><div id"chart-c…...
Three.js世界中的三要素:场景、相机、渲染器
一、Three.js简介 Three.js是一个基于WebGL的JavaScript库,它允许开发者在网页上创建和显示复杂的3D图形和动画,而无需用户安装任何额外的插件或软件。Three.js在Web开发中的地位非常重要,它通过提供简单直观的API,极大地降低了3…...
nginx5天时间从0到熟练掌握学习计划
要在 5 天内熟练地在项目中使用 Nginx,需要制定一个高效的学习计划,重点学习 Nginx 的核心功能和实际应用。以下是一个详细的学习计划,帮助你从零开始掌握 Nginx。 学习目标 掌握 Nginx 的基本概念和安装方法。能够配置 Nginx 托管静态文件、…...
2Dslam前端分类
文章目录 扫描匹配ICP核心思想具体流程: 似然场核心思想:基本原理:具体流程: 扫描匹配 Scan-to-Scan(扫描到扫描)匹配 扫描到扫描匹配是最基本的扫描匹配方法,通过比较当前扫描数据与上一扫描数…...
SOFABoot-02-模块化隔离方案
sofaboot 前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金…...
Maven环境搭建与配置
1 下载压缩包 官网下载地址: Download Apache Maven – Maven 2 配置系统环境变量 1.x版本配置Maven_HOME2.x版本配置M2_HOME3.x版本配置PATH检查是否配置生效: 打开命令窗口输入:mvn -version 3 配置开发工具IDEA 为什么不使用idea自带的maven插件? 版本兼容性问题:I…...
设计模式-结构型模式-组合模式
概述 组合模式 : Composite Pattern : 是一种结构型设计模式。 **它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。** 核心思想: 让单个对象 和 组合对象 实现相同的接口,这样就可以在不区分是单个对象还是组合对象的情况下,以相…...
如何使用jenv工具管理多个JDK版本
一、jenv到底是干啥的? 简单来说,jenv就是专门用来管理多个Java版本的工具。不管是开发、测试,还是生产环境,只要你需要在同一台机器上用不同的Java版本,它都能帮上大忙。比如说,项目A要求JDK 8࿰…...
macOS 使用 iconv 转化文件编码
文章目录 使用方式支持的编码类型iconv 更多用法 使用方式 iconv -f GB2312 -t UTF-8 分治算法.txt > 分治算法2.txt 支持的编码类型 可以使用 下面命令 查看编码类型 iconv -lPS : ISO-8859 有很多种分支,iconv 支持 ISO-8859-1、ISO-8859-10,但…...
常考计算机操作系统面试习题(二)(上)
目录 1. 描述分段内存管理机制 2. 解释文件分配磁盘块链接分配方法的优点和缺点 3. 进程的状态有哪些? 4. 一个进程的空间包括哪些部分? 5. 进程和程序的区别? 6. CPU调度可能发生在当一个进程: 7. 哪些条件同时出现&#…...
Mac | Excel | 列数改为和行数一样用数字表示
2. 3....
SLAM十四讲【二】三维空间刚体运动
SLAM十四讲【二】三维空间刚体运动 SLAM十四讲【一】基本概念 SLAM十四讲【二】三维空间刚体运动 SLAM十四讲【三】李群与李代数 SLAM十四讲【四】相机与图像 SLAM十四讲【五】线性优化 SLAM十四讲【六】视觉里程计 SLAM十四讲【七】回环检测 SLAM十四讲【八】建图 文章目录 S…...
Java对象的hashcode
在 Java 中,hashcode 和 equals 方法是 Object 类的两个重要方法,它们在处理对象比较和哈希集合(如 HashMap、HashSet)时起着关键作用。对于equals大部分Java程序员都不陌生,它通常是比较两个对象的内容(值)是否相等(双…...
华为ipd流程华为流程体系管理华为数字化转型流程数字化管理解决方案介绍81页精品PPT
华为流程体系最佳实践主要包括构建完善的流程框架,明确各层级流程要素与职责,梳理涵盖研发、采购、营销、服务、资产管理等多领域的流程,通过梳理业务场景和核心能力搭建差异化流程框架,采用自上而下与自下而上相结合的建模方法&a…...
人工智能 - 通用 AI Agent 之 LangManus、Manus、OpenManus 和 OWL 技术选型
一、核心项目概览 1. Manus(闭源通用 AI Agent) 定位 :全球首个全流程自动化通用 AI Agent,GAIA 基准测试 SOTA 水平。核心能力 : 全流程自动化 :从任务规划(如撰写报告)到执行(代码生成、表格制作)的端到端处理。智能纠错机制 :基于沙箱环境的实时错误反思与调整…...
数据库基础知识
目录 一、什么是数据库? 二、基本使用方法 (1)启动服务器进程 (2)连接服务器 (3)基本sql语句 三、MySQL架构 四、SQL语句分类 五、存储引擎是什么 一、什么是数据库? 数据库…...
嵌入式硬件工程师从小白到入门-原理图(三)
原理图绘制从小白到入门:知识点速通与注意事项 一、原理图绘制基础概念 什么是原理图? 原理图(Schematic)是电子电路的图形化表示,展示元器件之间的电气连接关系,是硬件设计的蓝图。 核心元素 元器件符号&…...
国科大——英语A——机考测试题
前沿: 此文记录了国科大所提供的一套机考试卷。 PART I VOCABULARY (20道,十分) Directions:Choose the best word or phrase from the choices A, B, C, or D to complete the following sentences. 1.For most pe…...
2025-03-22 学习记录--C/C++-PTA 习题4-11 兔子繁衍问题
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题4-11 兔子繁衍问题 一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每…...
HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述
这个是上一年的项目,之前弄得不怎么完整,只有一个openmv的,所以openmv自己去我主页找,这篇主要讲蓝牙 这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信 最终实现的效果是:openmv识别到图形和数…...
Deepseek训练成AI图片生成机器人
目录 内容安全层 语义理解层 提示词工程层 图像生成层 交付系统 训练好的指令(复制就可以) 内容安全层 理论支撑:基于深度语义理解的混合过滤系统 敏感词检测:采用BERT+CRF混合模型,建立三级敏感词库(显性/隐性/文化禁忌),通过注意力机制捕捉上下文关联风险 伦…...
在线问卷调查|在线问卷调查系统|基于Spring Boot的在线问卷调查系统的设计与实现(源码+数据库+文档)
在线问卷调查 目录 基于Spring Boot的在线问卷调查系统 一、前言 二、系统设计 三、系统功能设计 1.1 问卷管理 1.2 问卷调查管理 1.3 题目管理 2.1 问卷列表 2.2 问卷调查 2.3 问卷调查记录 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题…...
计算机网络的软件、硬件和组成
1.计算机网络的组成 计算机网络是一个十分复杂的系统,在逻辑上可以分为完成数据通信的通信子网和进行数据处理的资源子网两个部分。 通信子网 通信子网提供网络通信的功能,可以完成网络主机之间的数据传输、交换、通信控制和信号变换等通信…...
Cursor的五种高级用法
文章目录 代码编写写作编辑自动生成工作流搞定开源项目数据处理参考 代码编写 Cursor 最基本的功能是帮助你编写代码。只需使用 Composer(CtrlI),描述你想要实现的功能,Cursor 就能生成相应的代码。不满意?直接告诉它…...
C# SolidWorks 二次开发 -各种菜单命令增加方式
今天给大家讲一讲solidworks中各种菜单界面,如下图,大概有13处,也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…...
三分钟掌握音频提取 | 在 Rust 中优雅地处理视频音频
前言 在多媒体开发中,从视频中提取音频是一个常见需求。比如,你可能需要分离背景音乐来单独欣赏,或者提取对白用于语音分析,甚至为视频生成字幕。无论目的如何,音频提取都是多媒体处理中的基础操作。 传统上…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例9,TableView15_09带排序的导出表格示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
Qt+FFmpeg+SDL2播放进度显示及定位播放
参考链接: https://avmedia.0voice.com/?id59815 https://www.cnblogs.com/xdao/archive/2013/06/13/ffmpeg_tutor07.html https://blog.csdn.net/qq_38204686/article/details/139888438 https://blog.csdn.net/qq_38694388/article/details/120684650 https:/…...
【C语言】深入理解指针(二):从数组到二维数组的指针魔法
前言 在C语言中,指针一直是一个神秘而强大的存在。它不仅可以帮助我们高效地操作内存,还能让代码更加灵活和高效。今天,我们就来深入探讨指针的多种用法,从数组到二维数组,一步步揭开指针的神秘面纱。 一、数组名的指…...
调用链路传递隐式参数
在不修改方法签名与参数定义的情况下,可以通过 RpcContext 上的 setAttachment 和 getAttachment 在服务消费方和提供方之间进行参数的隐式传递。 隐式参数传递支持以下两个方向: 从消费方到提供方,也就是在请求发起时,在方法参数…...
鸿蒙 元服务摘要
元服务(原名原子化服务),是HarmonyOS提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即可使用&am…...
Browser Use Web UI 本地部署完全指南:从入门到精通
文章目录 引言一、项目概述1.1 核心功能1.2 技术特点 二、环境准备2.1 系统要求2.2 必要工具 三、详细部署步骤3.1 获取项目代码3.2 配置 Python 环境3.3 安装项目依赖3.4 环境配置3.5 启动应用 四、DeepSeek-V1 模型配置4.1 基础配置 五、执行Browser Use六、故障排查指南6.1 …...
Python元组
# coding: utf-8 print(-----------元组:不可变-----------)元组诗Python中内置的不可变序列 元素与元素之间使用英文的逗号分隔 元组中只有一个元素的时候,逗号也不能省略 元组的创建方式: (1)使用()直接创建元组 元组名 (element1,element2,element3,…...
物理环境与安全
物理安全的重要性 信息系统安全战略的一个重要组成部分物理安全面临问题 环境风险不确定性人类活动的不可预知性 典型的物理安全问题 自然灾害环境因素设备安全、介质安全、传输安全 场地选择 区域:避开自然灾害高发区环境:原理可能的危险因素抗震&…...
智慧医疗解决方案
1. 智慧医疗的兴起 智慧医疗作为智慧城市的关键部分,正逐渐成为医疗卫生体制改革的焦点。随着移动医疗和精准医疗的发展,智慧医疗解决方案变得触手可及,依托政策驱动和社会需求,致力于实现“以人为本、信息惠民”的目标。 2. 政…...
MySQL -- 复合查询
数据库的查询是数据库使用中比较重要的环节,前面的基础查询比较简单,不做介绍,可自行查阅。本文主要介绍复合查询,并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表,可以自行下载,也可以自己创建…...
【最后203篇系列】022 用Deepseek14b提取新闻事件
这算是之前一直想做的一件事,趁周末赶快做了。 业务意义:现实中有大量的舆情,这对我们的决策会有比较重要的作用 技术依赖: 1 模型基础能力2 消息队列3 异步获取消息4 时间序列库 1 模型基础能力 大模型发展到现在࿰…...
关于网络的一点知识(持续更新)
1、IP地址和子网掩码、端口号: IP地址是设备在网络上的地址,相当于一栋房子的门牌号。子网掩码相当于房子所在的街道。同一条街道的房子间是通过街道直通的,主人可以互相拜访。 举个例子,如下图所示。 说明:将两台设…...