MyBatis的创建和单表使用

news2024/11/22 18:23:41

前言:

之前我们了解到MySQL。接下来了解一下MyBatis,它不是一种数据库,那是什么呢和数据库有什么联系了?

目录

一:MyBatis的定义

二:MyBatis的创建

三:MyBatis的简单使用

3.1:准备工作

3.2:单表查询

3.2.1:查询表中的所有信息

3.2.2:根据字段进行查询

3.2.3:模糊查询

3.3:单表删除

3.4:单表修改

 3.5:单表插入


一:MyBatis的定义

MyBatis用于简化Java应用程序与关系型数据库之间数据交互的持久化框架(将应用程序与其使用和操纵的数据源分离),提供了一种将SQL查询映射到Java对象上的方法,使得开发人员可以更加方便地对数据库进行操作通过简单的XML或注解来配置和映射原始类型,接口,JAVA对象为数据库中的记录。

下图是后端调用MyBatis的过程


二:MyBatis的创建

2.1:创建SpringBoot的项目

2.2:添加MyBatis依赖

 2.3:配置连接字符串和MyBatis

MyBatis.xml是在resources/mapper创建所有表的xml文件 


三:MyBatis的简单使用

3.1:准备工作

1.根据数据库建立一个用户实体类,用户属性和数据库字段一一对应。

2.添加mapper接口

 3.添加UserMapper.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>

3.2:单表查询

1.在UserMapper.xml中添加SQL查询语句

3.2.1:查询表中的所有信息

2:添加Service(服务层)

@Service //服务层标签
public class UserService {
    @Resource //属性注入   将UserMapper放入到Spring容器中
    private UserMapper userMapper;
    public List<User> getAll(){
        return userMapper.getAll();
    }
}

3.添加Controller(控制层)

@RestController //@ResponseBody+@Controller
 //@ResponseBody 返回的Body不是html页面,是JSON字符串
@RequestMapping("/u") //类似servlet中的 @WebService("/u"),指定路径
public class UserControl {
    @Autowired //属性注入 将UserService存储到Spring容器中
    private UserService userService;
    @RequestMapping("/getall")
    public List<User> getAll(){
        return userService.getAll();
    }
}

 以上就完成了单表的查询,但如果想在控制台上打印SQL语句,还需要在配置文件中添加

logging.level.com.example.demo=debug
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl


3.2.2:根据字段进行查询

在Mapper接口中添加接口方法

List<User> getById( @Param("id") Integer id);
这里的@param注解 是给参数命名
1.使用#{}

 2.使用${}

从上图看出来#{}和${}的区别了吗?

#{}是占位符,而${}是直接替换。 

而${}存在不安全隐患(SQL注入)而SQL注入:通过莫种方式将恶意的SQL代码添加,然后传递到SQL服务器使其解析并执行。(使用一些语句得到原本得不到的结果

举个栗子:

当我传入一个  String username=" 'or '1=1";这时候使用${}

 数据库中是没有" 'or '1=1这个用户名的,但是却查到userinfo这个用户表的信息。这个就是SQL注入,存在安全隐患。

当类的属性和数据库中的字段不一样的时候

就将该类的属性设置成这个类型的默认值,那这时候我们改怎么弄了?

使用resultMap 


3.2.3:模糊查询


3.3:单表删除


3.4:单表修改

 3.5:单表插入


总结:

以上就是我总结的MyBatis的单表使用,若有错误或不足的地方,希望各位铁子留言纠错,若感觉不错,请一键三连。

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

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

相关文章

后端服务架构高性能设计之道

“N 高 N 可”&#xff0c;高性能、高并发、高可用、高可靠、可扩展、可维护、可用性等是后台开发耳熟能详的词了&#xff0c;它们中有些词在大部分情况下表达相近意思。本序列文章旨在探讨和总结后台架构设计中常用的技术和方法&#xff0c;并归纳成一套方法论。 前言 本文主…

视频采集到录制 - MP4生成

录制最终格式是MP4&#xff0c;视频流是采用H264编码流&#xff0c;音频是aac编码流 最终需要将两个流合并到一个文件里 采用的方案&#xff0c;是通过mp4v2的库&#xff0c;进行合并 原理很简单&#xff1a; 先创建文件&#xff0c;输入编码参数 需要创建视频流初始 也需要…

制造业在数字化时代如何应对挑战和机遇?

随着数字化时代的到来&#xff0c;制造业不可避免地会受到一些对应的挑战和机遇。以下是一些关键部分&#xff1a; 数字化转型&#xff1a;制造商已经采用数字技术来转变他们的运营。包括采用高级分析、自动化、人工智能 (AI) 和物联网 (IoT)。这些技术可以提高生产力、质量控制…

2.项目数仓、项目工具

项目数仓 数仓(Data Warehouse)是指用于存储和管理企业数据的一种大型数据库系统,以支持企业的决策分析活动。它采用了ETL(抽取、转化、加载)等技术来集成和清洗数据,并提供了灵活的查询和报表功能,使得分析师和决策者可以更好地理解企业的业务情况和趋势。 项目工…

基于三相坐标系状态方程的感应电动机起动动态计算(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

DataGrip使用技巧总结

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

照片怎么拼图?简单好用的拼图方法分享

照片的拼接不仅能够让我们将多张照片合成一张大图&#xff0c;还能够发挥我们的想象和创意&#xff0c;例如&#xff0c;我们可以将不同的照片拼接在一起&#xff0c;创造出一个全新的场景&#xff0c;或者将同一个场景的不同角度的照片拼接在一起&#xff0c;制作出一个完整的…

一个网站建设公司如何保障提供优质的服务

网站建设公司提供的服务是否优质&#xff0c;直接影响到客户的口碑&#xff0c;也会影响到公司的口碑。 一个好的网站建设公司&#xff0c;不仅会提供优质的服务&#xff0c;还会有专业的技术人员对客户进行跟踪服务。这是一项重要的工作&#xff0c;需要一个网站建设公司不断…

《神奇的连接组》读后

人类大脑被戏称为“三磅的宇宙”&#xff0c;或许可以从科学上解释关于“意识”的问题&#xff0c;大脑的神经科学可能是人类科学的最终前沿。 任何真正先进的科技&#xff0c;看起来都与魔法无异。 要解释大脑如何运转&#xff0c;单凭基因无法解释大脑为什么这样工作&#xf…

Java——Java易错选择题复习(2)(计算机网络)

1. 下面关于源端口地址和目标端口地址的描述中&#xff0c;正确的是&#xff08; &#xff09; A. 在TCP/UDP传输段中&#xff0c;源端口地址和目的端口地址是不能相同的 B. 在TCP/UDP传输段中&#xff0c;源端口地址和目的端口地址必须是相同的 C. 在TCP/UDP传输段中&#xff…

chatgpt赋能python:Python声音处理之变声

Python声音处理之变声 随着科技的发展&#xff0c;人们对于声音处理越来越感兴趣。变声技术就是其中的一种&#xff0c;它可以将一个人的声音变成其他的人或动物的声音&#xff0c;非常有趣。 Python作为一种广泛使用的编程语言&#xff0c;可以在声音处理中发挥重要作用。本…

如何在食品行业运用IPD?

食品是我国重要的民生产业之一&#xff0c;是保障和满足人民群众不断增长消费需求的重要支撑。食品指各种供人食用或者饮用的成品和原料以及按照传统既是食品又是药品的物品&#xff0c;包括加工食品&#xff0c;半成品和未加工食品&#xff0c;不包括烟草或只作药品用的物质。…

为数据可视化增添戏剧性

Python 中的视觉叙事&#xff1a;让数据说话的 5 个创新技巧 为数据可视化增添戏剧性 数据可视化 - 这是一个现在经常被抛出的短语。但我们谈论的不仅仅是普通的旧图表和图形。 不 不 不。我们谈论的是讲故事。我们正在谈论将这些行和列的数字变成令人着迷的叙述。 现在是我们从…

Elasticsearch:数据是如何被写入的?

在我之前的文章 “Elasticsearch&#xff1a;索引数据是如何完成的”&#xff0c;我详述了如何索引 Elasticsearch 的数据的。在今天的文章中&#xff0c;我将从另外一个视角来诠释如何写入数据到 Elasticsearch。更多关于 Elasticsearch 数据操作&#xff0c;请阅读文章 “Ela…

PowerShell install 一键部署postgres15

postgres 前言 PostgreSQL 是一个功能强大的开源对象关系数据库系统&#xff0c;拥有超过 35 年的积极开发经验 这为其赢得了可靠性、功能稳健性和性能的良好声誉。 通过官方文档可以找到大量描述如何安装和使用 PostgreSQL 的信息。 开源社区提供了许多有用的地方来熟悉Postg…

08 【生命周期 组件】

1. 生命周期 1.1 引出生命周期 生命周期 又名生命周期回调函数,生命周期函数、生命周期钩子是什么,Vue在关键时刻帮我们调用的一些特殊名称函数生命周期函数的名字不可更改,但函数的具体内容是根据程序员需求编写的生命周期函数中的this指向的是vm或组件实例对象 <div i…

贺斌教授团队:多少冥想训练才能提高脑机接口的性能?

冥想训练可以帮助人们学会更好地控制脑机接口。但是一项新的研究发现&#xff0c;单次的冥想练习不足以提高表现。发表在《Frontiers in Human Neuroscience》的一项研究结果表明&#xff0c;人们需要更长时间的冥想才能体验到明显的改善。 # 脑机接口性能如何提高&#xff1f;…

kafka 集群是如何选择 leader,你知道吗?

前言 kafka集群是由多个broker节点组成&#xff0c;这里面包含了许多的知识点&#xff0c;以下的这些问题你都知道吗? 你知道topic的分区leader是怎么选举的吗&#xff1f; 你知道zookeeper中存储了kafka的什么信息吗&#xff1f;起到什么做呢&#xff1f; 你知道kafka消息…

基于matlab地形可视化仿真

一、前言 此示例说明了将常规可用的数字高程模型转换为 X3D 格式以用于虚拟现实场景的可能性。 作为地形数据源&#xff0c;已使用南旧金山 DEM 模型。场景中包含一个简单的预制波音 747 模型&#xff0c;以展示从多个来源即时创建虚拟场景的技术。 此示例需要映射工具箱。 二、…

高通全面进攻智能汽车「路径」

“统一技术路线图”&#xff0c;被高通技术公司高级副总裁兼汽车业务总经理Nakul Duggal着重提及。 5月26日&#xff0c;高通在苏州举办汽车技术与合作峰会&#xff0c;Nakul Duggal在峰会上坦言&#xff0c;“我们在所有业务领域、所有产品开发中都遵循‘统一技术路线图’&am…