【MyBatis】MyBatis查询数据库

2024-03-21 14:40
文章标签 mybatis 查询数据库

本文主要是介绍【MyBatis】MyBatis查询数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1、MyBatis 是什么?
  • 2、为什么要学习 MyBatis?
  • 3、怎么学MyBatis?
  • 4、创建MyBatis项目
    • 4.1 创建数据库和表
    • 4.2 添加MyBatis相关依赖
      • 4.2.1 新项目添加mybatis依赖
      • 4.2.2 老项目添加mybatis依赖
    • 4.3 配置数据库连接字符串和MyBatis(保存的XML的目录)
      • 4.3.1 配置数据库的连接信息
      • 4.3.2 配置MyBatis的XML保存路径
  • 5、使用MyBatis的操作模式操作数据库
    • 5. 1 定义接口(普通的接口)
    • 5. 2 创建XML实现上面的接口
    • 5. 3 添加实体类
    • 5. 4 添加 Service
    • 5. 5 添加 Controller
    • 5.6 添加日志文件
  • 6、增、删、改操作
    • 6.1 增加用户操作
    • MyBatis添加用户并返回自增ID
    • 6.2 修改用户操作
    • 6.3 删除用户操作
  • 7、查询操作
    • 7.1 单表查询
      • 7.1.1 参数占位符 #{} 和 ${}的区别⭐⭐⭐⭐
      • 7.1.2 ${}使用场景(优点)
      • 7.1.3 SQL 注入问题
      • 7.1.4 like 查询
    • 7.2 多表查询
      • 7.2.1 返回类型:resultType
      • 7.2.2 返回字典映射:resultMap
      • 7.2.3 一对一查询
      • 7.2.4 一对多查询
  • 8、动态 SQL
    • 8.1 if 标签
    • 8.2 trim 标签
    • 8.3 where 标签
    • 8.4 set 标签
    • 8.5 foreach 标签

引言:

经过前⾯文章的学习,咱们 Spring 系列的基本操作已经实现的差不多了,接下来,让我们来一起学习更重要的知识——将前端传递的数据存储起来,或者查询数据库⾥⾯的数据。

1、MyBatis 是什么?

      MyBatis 是⼀款优秀的ORM(对象关系映射)持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了几乎所有的 JDBC代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和 映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。MyBatis官网

简单来说: MyBatis 是更简单完成程序和数据库交互的⼯具,也就是更简单的操作和读取数据库⼯具。

2、为什么要学习 MyBatis?

对于后端开发来说,程序是由以下两个重要的部分组成的:

  1. 后端程序
  2. 数据库

在这里插入图片描述
⽽这两个重要的组成部分要通讯,就要依靠数据库连接⼯具,那数据库连接⼯具有哪些❓ 比如之前我们学习的 JDBC,还有今天我们将要介绍的 MyBatis,那么已经有了 JDBC 了,为什么还要学习 MyBatis呢❓
这是因为 JDBC 的操作太繁琐了,我们先来回顾⼀下 JDBC 的操作流程:

  1. 创建数据库连接池 DataSource
  2. 通过 DataSource 获取数据库连接 Connection
  3. 编写要执行带 ? 占位符的 SQL 语句
  4. 通过 Connection 及 SQL 创建操作命令对象 Statement
  5. 替换占位符:指定要替换的数据库字段类型,占位符索引及要替换的值
  6. 使⽤ Statement 执行SQL 语句
  7. 查询操作:返回结果集 ResultSet,更新操作:返回更新的数量
  8. 处理结果集
  9. 释放资源

从上述操作流程可以看出,对于 JDBC 来说,整个操作⾮常的繁琐,我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等,⽽所有的这些操作步骤都需要在每个⽅法中重复书写。

于是我们就想,那有没有⼀种方法,可以更简单、更方便的操作数据库呢?

答案是肯定的,这就是我们要学习 MyBatis 的真正原因,它可以帮助我们更方便、更快速的操作数据库。

3、怎么学MyBatis?

MyBatis 学习只分为两部分:

  • 配置 MyBatis 开发环境;
  • 使用 MyBatis 模式和语法操作数据库。

4、创建MyBatis项目

开始搭建 MyBatis 之前,我们先来看⼀下 MyBatis 在整个框架中的定位,框架交互流程图:
在这里插入图片描述
MyBatis 也是⼀个 ORM 框架,ORM(Object Relational Mapping),即对象关系映射。在⾯向对
象编程语⾔中,将关系型数据库中的数据与对象建⽴起映射关系,进⽽⾃动的完成数据与对象的
互相转换:

  1. 将输⼊数据(即传⼊对象)+SQL 映射成原⽣ SQL
  2. 将结果集映射为返回对象,即输出对象

ORM 把数据库映射为对象:

  • 数据库表(table)–> 类(class)
  • 记录(record,⾏数据)–> 对象(object)
  • 字段(field)–> 对象的属性(attribute)

⼀般的 ORM 框架,会将数据库模型的每张表都映射为⼀个 Java 类。

也就是说使⽤ MyBatis 可以像操作对象⼀样来操作数据库中的表,可以实现对象和数据库表之间 的转换,接下来我们来看 MyBatis 的使⽤吧。

4.1 创建数据库和表

接下来我们要实现的功能是:使⽤ MyBatis 的⽅式来读取⽤户表中的所有⽤户,我们使⽤个⼈博
客的数据库和数据包,具体 SQL 如下:

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;-- 使用数据数据
use mycnblog;-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(id int primary key auto_increment,username varchar(100) not null,password varchar(32) not null,photo varchar(500) default '',createtime datetime default now(),updatetime datetime default now(),`state` int default 1
) default charset 'utf8mb4';-- 创建文章表
drop table if exists  articleinfo;
create table articleinfo(id int primary key auto_increment,title varchar(100) not null,content text not null,createtime datetime default now(),updatetime datetime default now(),uid int not null,rcount int not null default 1,`state` int default 1
)default charset 'utf8mb4';-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(vid int primary key,`title` varchar(250),`url` varchar(1000),createtime datetime default now(),updatetime datetime default now(),uid int
)default charset 'utf8mb4';-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES 
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);-- 文章添加测试数据
insert into articleinfo(title,content,uid)values('Java','Java正文',1);-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);

4.2 添加MyBatis相关依赖

4.2.1 新项目添加mybatis依赖

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.2 老项目添加mybatis依赖

首先请参考➡️ 准备工作—添加 lombok 到项目中
然后再进行下面的配置:
在这里插入图片描述
添加好依赖以后千万不要立即启动项目❗❗千万不要❗❗❗

4.3 配置数据库连接字符串和MyBatis(保存的XML的目录)

4.3.1 配置数据库的连接信息

在这里插入图片描述

在这里插入图片描述

注意事项: 如果使⽤ MySQL 是 5.x 之前的使⽤的是“com.mysql.jdbc.Driver”,如果是⼤于 5.x 使⽤的是“com.mysql.cj.jdbc.Driver”;mysql Driver默认是8.0,如果是8.0以上,则driver-class-name使用的是“com.mysql.cj.jdbc.Driver”,如果是8.0之前的,则使用的是“com.mysql.jdbc.Driver”;如果你创建的是新项目,并且spring boot版本号在2.6.9之前的,那么就只有“com.mysql.cj.jdbc.Driver”这一种写法。

4.3.2 配置MyBatis的XML保存路径

在这里插入图片描述

5、使用MyBatis的操作模式操作数据库

MyBatis模式如图所示:
在这里插入图片描述

5. 1 定义接口(普通的接口)

package com.example.demo.mapper;import com.example.demo.

这篇关于【MyBatis】MyBatis查询数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/m0_46468731/article/details/125956152
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/832923

相关文章

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?

mybatis用拦截器实现字段加解密全过程

《mybatis用拦截器实现字段加解密全过程》本文通过自定义注解和MyBatis拦截器实现敏感信息加密,处理Parameter和ResultSet,确保数据库存储安全且查询结果解密可用... 目录前言拦截器的使用总结前言根据公司业务需要,灵活对客户敏感信息进行加解密,这里采用myBATis拦截器进行简单实

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口