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

MyBatis-1:基础概念+环境配置

什么是MyBatis?

MyBatis是一款优秀的持久层框架,支持自定义sql,存储过程以及高级映射。

MyBatis就是可以让我们更加简单的实现程序和数据库之间进行交互的一个工具。可以让我们更加简单的操作和读取数据库的内容

MyBatis的官网:https://blog.mybatis.org/

为什么要学习MyBatis?

后端开发的工作:后端程序、数据库

而这两个部分的重要部分就要依赖 数据库连接工具,而连接工具有哪些呢?比如JDBC、MyBatis。

关于JDBC的知识内容:http://t.csdn.cn/PJnQY

而相比较与JDBC手动挡,MyBatis就是自动挡!

第一个MyBatis查询

1.构建好数据库

2.在项目中添加MyBatis框架

这个分为两种情况,在老项目/新项目 中添加

直接加入依赖的方法

<!-- 添加 MyBatis 框架 -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version>
</dependency>
<!-- 添加 MySQL 驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version><scope>runtime</scope>
</dependency>

推荐:使用EditStarters插件

http://t.csdn.cn/DE3qW //点击链接查看插件使用技巧

选择MyBatis Framework 和 MySQL Driver

新项目的话直接在创建之初添加MyBatis Framework 和 MySQL Driver即可

3.配置 MyBatis 中的 XML 路径

如上图,项目添加MyBatis之后运行错误是正常的,所以我们要 设置四个操作,也就是配置数据库的四个链接信息。如下面代码所示。
# 数据库连接配置spring:datasource:# URL分别代表地址,端口号,数据库名称,编码格式,是否加密url: jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false#账号 和 密码username: rootpassword: root# 使用 mysql-connector-java 是 5.x 之前的使用的是“com.mysql.jdbc.Driver”# 如果是大于 5.x使用的是“com.mysql.cj.jdbc.Driver”。driver-class-name: com.mysql.cj.jdbc.Driver# 配置MyBatis的xml# MyBatis 的两个组成部分:① 接口(包含表的操作方法)  ② xml 实现接口
# mysql通过sql语句来操作数据库,但是java与sql不兼容,使用类实现的话是比较麻烦的,还带用字符串
# 而 MyBatis 实现了一个 xml 的技术,来实现 接口 的内容。而接口则是让 java 来进行调用
# 配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件---告诉系统哪些文件是 MyBatis 要使用的
mybatis:mapper-locations: classpath:mapper/*Mapper.xml

注意 xml 的配置要和文件路径相对应,如下图所示:

4. 添加业务代码

用户请求控制器,然后参数校验,校验没问题,就可以通过Service调用用户持久层来操作数据库。

文件夹内容的创建:

写功能:

1.写一个实体类(entity文件夹下)

package com.example.demo.entity;import lombok.Data;import java.io.Serializable;
import java.time.LocalDateTime;@Data
public class Userinfo implements Serializable {private final long serializableId = 1L;private int id;private String username;private String password;private String photo; // 头像private LocalDateTime createTime;private LocalDateTime updateTime;private int state;
}

2.构建Mapper层的代码实现

①创建Interface

②创建xml

③实现Service

package com.example.demo.service;import com.example.demo.entity.Userinfo;
import com.example.demo.mapper.UserinfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserinfoService {@Autowiredprivate UserinfoMapper userinfoMapper;public Userinfo getUserById(Integer id){return userinfoMapper.getUserInfoById(id);}
}

④实现Controller

注意:通常URL只使用小写,单词较多可以使用 -(中划线) 或者 _ (下划线)
package com.example.demo.controller;import com.example.demo.entity.Userinfo;
import com.example.demo.service.UserinfoService;
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 UserinfoController {@AutowiredUserinfoService userinfoService;@RequestMapping("/get-userinfo-by-id")public Userinfo getUserinfoById(Integer id){if (id==null) return null;return userinfoService.getUserById(id);}
}

相关文章:

MyBatis-1:基础概念+环境配置

什么是MyBatis&#xff1f;MyBatis是一款优秀的持久层框架&#xff0c;支持自定义sql&#xff0c;存储过程以及高级映射。MyBatis就是可以让我们更加简单的实现程序和数据库之间进行交互的一个工具。可以让我们更加简单的操作和读取数据库的内容。MyBatis的官网&#xff1a;htt…...

R语言基础(五):流程控制语句

R语言基础(一)&#xff1a;注释、变量 R语言基础(二)&#xff1a;常用函数 R语言基础(三)&#xff1a;运算 R语言基础(四)&#xff1a;数据类型 6.流程控制语句 和大多数编程语言一样&#xff0c;R语言支持选择结构和循环结构。 6.1 选择语句 选择语句是当条件满足的时候才执行…...

【Java开发】设计模式 02:工厂模式

1 工厂模式介绍工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通过使…...

合并两个链表(自定义位置合并与有序合并)LeetCode--OJ题详解

图片: csdn 自定义位置合并 问题&#xff1a; 给两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中 下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点 的位置。 比如&#xff1a; 输入&#xff1a;list1 [1…...

Java编程问题总结

Java编程问题总结 整理自 https://github.com/giantray/stackoverflow-java-top-qa 基础语法 将InputStream转换为String apache commons-io String content IOUtils.toString(new FileInputStream(file), StandardCharsets.UTF_8); //String value FileUtils.readFileT…...

binutils工具集——objcopy的用法

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一、工具简介 objcopy主要用来转换目标文件的格式。 在实际开发中&#xff0c;我们会用该工具进行格式转换与内容删除。 &#xff08;1&#xff09;在链接完成后&#xff0c;将elf格式的.out文件转化为bi…...

Windows使用Stable Diffusion时遇到的各种问题和知识点整理(更新中...)

Stable Diffusion安装完成后&#xff0c;在使用过程中会出现卡死、文件不存在等问题&#xff0c;在本文中将把遇到的问题陆续记录下来&#xff0c;有兴趣的朋友可以参考。 如果要了解如何安装sd&#xff0c;则参考本文《Windows安装Stable Diffusion WebUI及问题解决记录》。如…...

MySQL workbench基本查询语句

1.查询所有字段所有记录 SELECT * FROM world.city; select 表示查询&#xff1b;“*” 称为通配符&#xff0c;也称为“标配符”。表示将表中所有的字段都查询出来&#xff1b;from 表示从哪里查询&#xff1b;world.city 表示名为world的数据库中的city表&#xff1b; 上面…...

软件测试详解

文章目录一、软件危机&#xff08;一&#xff09;概念&#xff08;二&#xff09;产生软件危机的原因&#xff08;三&#xff09;消除软件危机的途径二、软件过程模型&#xff08;一&#xff09;软件生命周期概念&#xff08;二&#xff09;软件开发模型1. 瀑布模型2. 螺旋模型…...

YOLOS学习记录

在前面&#xff0c;博主已经完成了YOLOS项目的部署与调试任务&#xff0c;并在博主自己构造的数据集上进行了实验&#xff0c;实验结果表明效果并不显著&#xff0c;其实这一点并不意外&#xff0c;反而是在情理之中。众所周知&#xff0c;Transformer一直以来作为NLP领域的带头…...

数组边遍历(for循环)边删除为什么删不干净 及三种实现删除的方法

文章目录1、为什么删不干净倒序删迭代器lambda表达式删除为什么说数组边for循环遍历边删除会出现删不干净的情况1、为什么删不干净 先写一个例子&#xff1a;可以先猜一下控制台会打印出什么内容&#xff1f; public class removeIterator {public static void main(String[]…...

环境配置之Keepass

前言很久以前&#xff0c;就有了想要一个自己密码管理器的念头。毕竟&#xff0c;即使浏览器能记住各个网站的账号密码&#xff0c;但是在登录单独客户端的时候&#xff0c;仍然要翻找密码。为了省事&#xff0c;也曾经是一个密码走天下。然后被劫持了QQ给同学发黄色小网站&…...

Java 电话号码的组合

电话号码的字母组合中等给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。示例 1&#xff1a;输入&#xff1a;digits "23…...

MATLAB——将直接型转化为并联型和级联型

题目1(IIR)&#xff1a; 已知一个系统的传递函数为&#xff1a; H&#xff08;z&#xff09;8−4z−111z−2−2z−31−1.25z−10.75z−2−0.125z−3H&#xff08;z&#xff09;\frac{8-4z^{-1}11z^{-2}-2z^{-3}}{1-1.25z^{-1}0.75z^{-2}-0.125z^{-3}}H&#xff08;z&#xff09…...

.NET Framework .NET Core与 .NET 的区别

我们在创建C#程序时,经常会看到目标框架以下的选项,那么究竟有什么区别? 首先 .NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体…...

carla与ros2的自动驾驶算法-planning与control算法开发与仿真

欢迎仪式 carla与ros2的自动驾驶算法-planning与control算法开发与仿真欢迎大家来到自动驾驶Player(L5Player)的自动驾驶算法与仿真空间&#xff0c;在这个空间我们将一起完成这些事情&#xff1a; 控制算法构建基础模块并仿真调试&#xff1a;PID、LQR、Stanley 、MPC、滑膜控…...

corn表达式

简单理解corn表达式&#xff1a;在使用定时调度任务的时候&#xff0c;我们最常用的&#xff0c;就是cron表达式了。通过cron表达式来指定任务在某个时间点或者周期性的执行。cron表达式配置起来简洁方便&#xff0c;无论是Spring的Scheduled还是用Quartz框架&#xff0c;都支持…...

推荐系统中对抗性机器学习-文献综述与未来发展整理分享

对抗学习是一种机器学习技术&#xff0c;旨在通过提供欺骗性输入来欺骗模型。最常见的原因是导致机器学习模型出现故障。大多数机器学习技术旨在处理特定的问题集&#xff0c;其中从相同的统计分布&#xff08;IID&#xff09;生成训练和测试数据。当这些模型应用于现实世界时&…...

Proteus8.15安装教程

1、解压Proteus8.15 安装包&#xff0c;然后双击进去&#xff0c;找到setup文件&#xff0c;右键&#xff0c;以管理员身份运行。 2、需要安装一些插件&#xff0c;点击“next”。把插件安装完成。 点击“finfish” 点击“install” 点击“Cancel” 3、如果没有上面步骤&…...

Shell 基本运算符

Shell 和其他编程语言一样&#xff0c;支持多种运算符&#xff0c;包括&#xff1a; 算数运算符关系运算符布尔运算符字符串运算符文件测试运算符 原生bash不支持简单的数学运算&#xff0c;但是可以通过其他命令来实现&#xff0c;例如 awk 和 expr&#xff0c;expr 最常用。…...

告别手动复制!用ArcGIS字段计算器(VB/Python)批量提取字段值的保姆级教程

ArcGIS字段计算器实战指南&#xff1a;VB与Python高效提取字段值的深度对比 在GIS数据处理工作中&#xff0c;属性表字段值的部分提取是最常见却又最耗时的操作之一。想象一下&#xff0c;当你面对一个包含上万条记录的"BSM"字段&#xff0c;需要提取前6位作为行政区…...

QT窗口特效实战:从透明到异形控件的全方位实现指南

1. 从零开始理解QT窗口特效 第一次接触QT窗口特效时&#xff0c;我被那些酷炫的透明和异形界面深深吸引。记得当时看到Mac OS X的Dock栏那种毛玻璃效果&#xff0c;就特别想在自己的QT应用中实现类似效果。经过多年实战&#xff0c;我发现QT实现这些特效其实比想象中简单得多。…...

告别格式焦虑:用StarWind V2V Converter v9.0.1.268在ESXi 8.0和Hyper-V之间无损迁移虚拟机

跨平台虚拟机迁移实战&#xff1a;StarWind V2V Converter的高效应用指南 当企业IT基础设施面临升级或混合云架构转型时&#xff0c;虚拟机格式转换往往成为技术团队最头疼的问题之一。我曾参与过多次从VMware到Hyper-V的迁移项目&#xff0c;亲眼目睹了传统转换方法导致的业务…...

七牛云图床避坑指南:如何避免CNAME解析和HTTPS配置中的常见错误

七牛云图床高阶配置实战&#xff1a;CNAME与HTTPS深度排错手册 第一次用七牛云图床时&#xff0c;我在凌晨三点对着屏幕上的404错误发呆——明明按照文档一步步操作&#xff0c;为什么图片死活加载不出来&#xff1f;后来才发现是CNAME解析的TTL缓存问题。这种看似简单的配置背…...

拯救大模型“幻觉”?Python RAG九大架构全解析

别让你的AI助手&#xff0c;从“得力员工”变成“职场骗子” 你是否也曾被大模型的“一本正经胡说八道”气到无语&#xff1f; 你精心部署的客服机器人&#xff0c;自信地告诉客户&#xff1a;“我们的退货政策是90天&#xff01;”——而实际上&#xff0c;公司的规定是30天…...

ENVI 5.3波谱库实战:从自带库浏览到自定义库创建,遥感地物识别效率翻倍

ENVI 5.3波谱库实战&#xff1a;从自带库浏览到自定义库创建&#xff0c;遥感地物识别效率翻倍 在遥感图像解译工作中&#xff0c;地物波谱特征就像每类物质的"光学指纹"。ENVI 5.3的波谱库功能&#xff0c;正是帮助我们从海量遥感数据中快速匹配这些"指纹"…...

Leetcode 数据结构刷题 ->链表1

[27. 移除元素]移除等于所给值的元素&#xff0c;我们可以直接使用双指针&#xff0c;对着来的。关键就是把不等于x的值&#xff08;我改一下&#xff0c;没用val&#xff09;&#xff0c;放到后面去&#xff0c;这样前面就全部都是不等于x值&#xff0c;再计数即可。看代码就对…...

65R125-ASEMI超结MOS管TO-220封装

编辑&#xff1a;LL65R125-ASEMI超结MOS管TO-220封装型号&#xff1a;65R125品牌&#xff1a;ASEMI沟道&#xff1a;NPN封装&#xff1a;TO-220漏源电流&#xff1a;31A漏源电压&#xff1a;650VRDS(on):125mΩ批号&#xff1a;最新引脚数量&#xff1a;3封装尺寸&#xff1a;如…...

一条命令搞定STM32程序下载:OpenOCD program命令的隐藏用法与避坑指南

STM32极速烧录秘籍&#xff1a;OpenOCD program命令高阶玩法全解析 每次调试STM32都要重复点击IDE的下载按钮&#xff1f;CI/CD流水线卡在烧录环节&#xff1f;是时候解锁OpenOCD的program命令了——这个被低估的"瑞士军刀"能让你用一行命令完成擦除、烧录、校验、复…...

3步打造极速安全系统:AtlasOS开源优化方案全解析

3步打造极速安全系统&#xff1a;AtlasOS开源优化方案全解析 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atl…...