当前位置: 首页 > news >正文

MyBatis详解1——相关配置

一、什么是MyBatis

1.定义:是一个优秀的持久层框架(ORM框架),它支持自定义 SQL、存储过程以及高级映射。MyBatis是一个用来更加简单的操作和读取数据库的工具。

2.支持的操作方式:xml或者注解实现操作(xml是主流的操作方式)

3.通过MyBatis可以将后端程序和数据库连接起来,被称为数据库连接工具(其还有JDBC,但相比起来JDBC太过于麻烦)。

二、搭建MyBatis开发环境

0.准备工作:创建数据库和测试数据

2.1在项目中添加MyBatis框架

2.1.1新项目中添加MyBatis框架

在这里插入图片描述

2.1.2 在已创建的项目中添加MyBatis框架

在pom.xml中右击:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:以上步骤操作完成之后不要着急启动项目,还需要配置连接的数据库地址,如下:

2.2配置连接字符串

在application.yml中进行配置:

#数据库连接配置(系统的)
spring:datasource:url: jdbc:mysql://127.0.0.1/mycnblog?characterEncoding=utf8mb4username: rootpassword: 12345678driver-class-name: com.mysql.cj.jdbc.Driver

2.3配置 MyBatis 中的 XML 路径

在application.yml中进行设置:
因为需要使用xml的方式操作MyBatis

#配置 MyBatis 中的 XML 路径
mybatis:mapper-locations: classpath:mybatis/**Mapper.xml

在这里插入图片描述

三、添加业务代码

以下流程图反映了后端开发的工程思路,接着就用这个模式来实现MyBatis查询所有用户的功能
在这里插入图片描述
MyBatis模式关键在于两个文件:
@Mapper接口实现(定义方法没有方法实现)+
XML会实现@Mapper的方法体

3.1添加实体类

在这里插入图片描述

3.2 添加mapper接口

数据持久层的接口定义

package com.example.demo.mapper;import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserMapper {//查询方法定义完成public UserInfo getUserById(Integer id);
}

3.3添加UserMapper.xml

UserMapper方法的具体实现
MyBatis的固定xml格式:

<?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.example.demo.mapper.UserMapper"></mapper>

查询所有用户sql的具体实现:

<?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.example.demo.mapper.UserMapper"><select id="getUserById" resultType="com.example.demo.model.UserInfo">select * from userinfo where id = #{id}</select>
</mapper>

在这里插入图片描述

3.4添加Service

服务层代码实现:

package com.example.demo.service;import com.example.demo.mapper.UserMapper;
import com.example.demo.model.UserInfo;
import org.springframework.stereotype.Service;import javax.annotation.Resource;/*** 根据id查询用户对象*/
@Service
public class UserService {@Resourceprivate UserMapper userMapper;public UserInfo getUserById(Integer id){return userMapper.getUserById(id);}
}

3.5添加Controller

控制器层的代码实现:

package com.example.demo.controller;import com.example.demo.model.UserInfo;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/getuserbyid")public UserInfo getUserById(Integer id){if (id != null && id > 0){//前端参数有效return userService.getUserById(id);} else{return new UserInfo();}}
}

3.6结果展现:

在这里插入图片描述

相关文章:

MyBatis详解1——相关配置

一、什么是MyBatis 1.定义&#xff1a;是一个优秀的持久层框架&#xff08;ORM框架&#xff09;&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis是一个用来更加简单的操作和读取数据库的工具。 2.支持的操作方式&#xff1a;xml或者注解实现操作&#xff08;xm…...

字节青训营——秒杀系统设计学习笔记(三)

限流算法 限流顾名思义&#xff0c;就是对请求或并发数进行限制&#xff1b;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限&#xff0c;就需要对调用我们服务的上游请求进行限制&#xff0c;以防止自身服务由于资源耗尽而…...

每天一道大厂SQL题【Day10】电商分组TopK实战

每天一道大厂SQL题【Day10】电商分组TopK实战 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…...

最全的免费录屏工具,这 19 款录屏软件绝对值得你收藏

屏幕录制软件可让您捕获屏幕以与他人共享&#xff0c;创建与产品相关的视频、教程、课程、演示、视频等。这些软件是您能够从网络摄像头和屏幕录制视频。以下是精选的顶级屏幕录像机列表。 适用于 PC 的19 款免费录屏屏幕录像机软件 1&#xff09;奇客免费录屏 奇客免费录屏&am…...

vb.net计算之.net core基础(2)-发布应用

目录 发布程序测试运行运行方式发布程序 首先,将编译配置改为Release 然后,发布应用,在生成菜单下。 选择发布到文件夹 继续选择文件夹 接着,完成 关闭 点击发布标签栏的发布按钮...

微服务项目【商品秒杀接口压测及优化】

生成测试用户 将UserUtils工具类导入到zmall-user模块中&#xff0c;运行生成测试用户信息&#xff0c;可根据自身电脑情况来生成用户数量。 UserUtils&#xff1a; package com.xujie.zmall.utils;import com.alibaba.nacos.common.utils.MD5Utils; import com.fasterxml.j…...

1997. 访问完所有房间的第一天

题目 你需要访问 n 个房间&#xff0c;房间从 0 到 n - 1 编号。同时&#xff0c;每一天都有一个日期编号&#xff0c;从 0 开始&#xff0c;依天数递增。你每天都会访问一个房间。 最开始的第 0 天&#xff0c;你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始 的数组 n…...

通达信交易接口以什么形式执行下单的?

通达信程交易接口 以API形式来执行下单接口&#xff0c;一般不再需要通过接口系统之间进行连接&#xff0c;通过直接调用通达信dll交易函数的方式直接进行交易&#xff0c;包括下单&#xff0c;撤单&#xff0c;查询资金股份、当日委托、当日成交等方面都能很快的执行出来。以a…...

CobaltStrike上线微信通知

CobaltStrike上线微信通知 利用pushplus公众号&#xff08;每天免费发送200条消息&#xff09; http://www.pushplus.plus/push1.html 扫码登录后需要复制token 可以测试一下发送一下消息&#xff0c;手机会受到如下消息。可以在微信提示里将消息免打扰关闭&#xff08;默认…...

喜茶、奈雪的茶“花式”寻生路

配图来自Canva可画 疫情全面开放不少人“阳了又阳”&#xff0c;电解质饮品成为热销品&#xff0c;梨子、橘子、柠檬等水果被卖断货&#xff0c;凉茶、黄桃罐头被抢购一空&#xff0c;喜茶的“多肉大橘”、奈雪的“霸气银耳炖梨”、蜜雪冰城的“棒打鲜橙”、沪上阿姨的“鲜炖整…...

Xstream使用教程

1.Xstream介绍 官网&#xff1a;https://x-stream.github.io/tutorial.html 介绍&#xff1a;XStream 对象序列化和反序列化为 XML的一个JAVA类库。JDK 1.4以上适用。 PS:与JAXB相比&#xff0c;Xstream更好用一些&#xff0c;像XStreamImplicit这种注解&#xff0c;我在JAX…...

【正点原子FPGA连载】第十一章PL SYSMON测量输入模拟电压 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十一章PL SYSM…...

纷享销客百思特 | 数字化营销赋能企业新增长沙龙圆满落幕

为进一步帮助企业客户实现数字化转型&#xff0c;纷享销客联合百思特管理咨询集团&#xff0c;于2月10日举办 “数字化营销赋能企业新增长”主题沙龙。本次活动以“新变革新增长”为主题&#xff0c;现场30余位制造企业高管齐聚一堂&#xff0c;共同探讨企业如何在当前复杂的宏…...

oracle查看具体表占用空间 oracle查看表属于哪个用户

文章目录前言oracle查看具体表占用空间1、查看表空间总大小、使用率、剩余空间2、查看具体表的占用空间大小3、查看表空间对应日志文件oracle查看表属于哪个用户1、oracle怎么查看表属于哪个用户2、Oracle查询视图所属用户3、Oracle查询存储过程所属用户总结前言 表空间是数据…...

2.Visual Studio下载和安装

Visual Studio 是微软提供的一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于为 Windows 系统开发应用程序。Visual Studio 提供了构建 .Net 平台应用程序的一站式服务&#xff0c;可以使用 Visual Studio 开发、调试和运行应用程序。 1、Visual Studio下载 …...

「4」线性代数(期末复习)

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 第四章 向量组的线性相关性 &2&#xff09;向量组的线性相关性 &3&#xff09;向…...

IDEA中使用tomcat8-maven-plugin插件

第一种方式 pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.or…...

2023年妇女节是哪一天 妇女节是2023年几月几日?

2023年妇女节是哪一天是2023年几月几日&#xff1f; 2023年妇女节是2023年3月8日 三八妇女节是国家法定节假日吗&#xff1f; 妇女节不是国家法定节假日&#xff0c;而国家法定节假日包括&#xff1a;元旦、春节、清明节、劳动节、端午节、中秋节、国庆节&#xff1b; 关于三…...

如何运维多集群数据库?58 同城 NebulaGraph Database 运维实践

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SktQW2qn-1676450580889)(https://www-cdn.nebula-graph.com.cn/nebula-website-5.0/images/blogs/58.%20Com%20Inc/58%E5%90%8C%E5%9F%8E_%E7%94%BB%E6%9D%BF%201.jpg)] 图计算业务背景介绍 我们为什…...

尚医通(十四)Spring Cloud GateWay网关 | 跨域 | 权限认证

目录一、网关基本概念1、API网关介绍2、Spring Cloud Gateway3、Spring Cloud Gateway核心概念二、创建service_gateway模块&#xff08;网关服务&#xff09;1、创建service_gateway模块2、在pom.xml引入依赖3、编写application.properties配置文件4、编写启动类5、前端端口号…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

五、jmeter脚本参数化

目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...

react更新页面数据,操作页面,双向数据绑定

// 路由不是组件的直接跳转use client&#xff0c;useEffect&#xff0c;useRouter&#xff0c;需3个结合&#xff0c; use client表示客户端 use client; import { Button,Card, Space,Tag,Table,message,Input } from antd; import { useEffect,useState } from react; impor…...