第十四章 MyBatis

第十四章 MyBatis

  • 1.入门-课程介绍
  • 2.入门-快速入门程序
  • 3.配置SQL提示
  • 4.入门-JDBC
  • 5.入门-数据库连接池
  • 6.入门-lombok工具包介绍
  • 7.基础操作-环境准备
  • 8.基础操作-删除
  • 9.基础操作-删除(预编译SQL)
  • 10.基础操作-新增
  • 11.基础操作-新增(主键返回)
  • 12.基础操作-更新
  • 13.基础操作-查询(根据ID查询)
  • 14.基础操作-查询(条件查询)
  • 15.XML映射文件
  • 16.动态SQL-if
  • 17.if-案例
  • 18.动态sql-forEach
  • 19.sql&include

1.入门-课程介绍

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

2.入门-快速入门程序

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

不需要的删除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Springboot自带配置文件
在这里插入图片描述

这里的mapper包就相当于三层架构里面的Dao这个包
在这里插入图片描述

下面我们测试一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.配置SQL提示

现在这里我的SQL语句写错了也不会报错
在这里插入图片描述
在这里插入图片描述

如果没有提示表名或者表爆红了,我们需要进行配置
在这里插入图片描述

4.入门-JDBC

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

5.入门-数据库连接池

在这里插入图片描述
在这里插入图片描述
Hikari是springboot自带的连接池
在这里插入图片描述

如果在springboot项目中,我想使用druid连接池
第一步:引入依赖 第二步:配置连接信息
在这里插入图片描述
在这里插入图片描述
切换成功
在这里插入图片描述
下面改不改都可以
在这里插入图片描述
在这里插入图片描述

6.入门-lombok工具包介绍

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

引入依赖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

老idea版本要自己装
在这里插入图片描述

7.基础操作-环境准备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
准备数据库表
在这里插入图片描述
在这里插入图片描述
emp表中的数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面是需要的依赖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.基础操作-删除

在这里插入图片描述
id为17的删除成功
在这里插入图片描述
在这里插入图片描述

其实delete操作是有返回值,返回的是此次操作影响几条记录数
只是这里我们不需要
在这里插入图片描述
17之前已经删除
所以返回的是0
0表示没有影响任何记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.基础操作-删除(预编译SQL)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面这种就是SQL注入
即使我们没有正确的用户名密码,我们也登入成功了
在这里插入图片描述

下面是预编译SQL的情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

$(…)一般是对表名或者字段名进行动态设置的时候使用
在这里插入图片描述

在这里插入图片描述

10.基础操作-新增

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

11.基础操作-新增(主键返回)

在这里插入图片描述

我这里在插入一条记录后
然后返回这条记录的主键id
返回失败了
在这里插入图片描述

默认情况下,这条主键值是不会返回的
在这里插入图片描述

如果我们要返回这个主键值
在这里插入图片描述
在这里插入图片描述

主键值返回成功
在这里插入图片描述

12.基础操作-更新

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

13.基础操作-查询(根据ID查询)

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

有个问题
后面三个全为空
在这里插入图片描述
在这里插入图片描述

方法一:
给字段起一个别名
在这里插入图片描述

方法二:
在这里插入图片描述

方法三:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.基础操作-查询(条件查询)

在这里插入图片描述

这里的#{name}是在‘’内,不可以
在这里插入图片描述
我们这样可以使用 $ {name},$ 表示拼接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15.XML映射文件

在这里插入图片描述

这里我们用 . 分割会出现问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

去MyBatis中文网复制约束
在这里插入图片描述
在这里插入图片描述

获取EmpMapper的全类名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16.动态SQL-if

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

如果只传gender项,会报错,因为多了一个and
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

17.if-案例

我们这里只要更新三个字段
在这里插入图片描述
将其他不需要更新的字段删除
在这里插入图片描述
下面是没有更新前id为18的用户信息
在这里插入图片描述

我们在更新后发现,我们不需要更新的部分变为null了
在这里插入图片描述

原因是sql语句中更新的字段都是固定死的
意味着每一次我们都要更新这些字段
在这里插入图片描述
在这里插入图片描述

要使用动态sql,注解十分不方便
我们要到xml映射文件中进行操作
在这里插入图片描述

现在我们再进行存储
在这里插入图片描述

Id为19的更新成功
在这里插入图片描述

下面我们只更新id为19的username
在这里插入图片描述

原因是多了一个 ,
在这里插入图片描述

这里mybatis中提供了< set>< /set>标签来解决这种问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

18.动态sql-forEach

在这里插入图片描述
如果我们要执行批量删除
比如删除18,19,20三条记录
在这里插入图片描述
在这里插入图片描述
删除成功
在这里插入图片描述

我们将id值封装在ids集合中传递进来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除成功
在这里插入图片描述
在这里插入图片描述

19.sql&include

这里我们不用select*进行查询,下面这样列举出来比较快
在这里插入图片描述
上述的操作中有部分sql语句是一样的,如果我们改了某个字段名,所有的sql语句都要进行修改,十分麻烦,在java中我们一般会将其封装到一个方法中,直接改这个方法就行
这里我们同样这样做
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow命令执行(web29-web52)

目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 web45 web46 web47 web48 web49 web50 web51 web52 web29 <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match…

Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

无标签人群技术&#xff0c;作者引入了一种排名。 利用的是一个图的人群数量一定小于等于包含这个图的图 生成排名数据集 作者提出了一种自监督任务&#xff0c;利用的是一个图的人群数量一定小于等于包含这个图的图 流程&#xff1a; 1.以图像中心为中心&#xff0c;划分一…

CentOS安装Flume

CentOS安装Flume 一、简介二、安装1、下载2、解压3、创建配置文件4、启动flume agent5、验证 一、简介 Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexi…

使用 Swift 代码优化项目编译速度

引言 软件的性能是评价一个软件质量的重要指标&#xff0c;尤其在今天这个时代&#xff0c;性能已成为大型项目不可或缺的考虑因素之一。对于用户量极大的软件&#xff0c;如网银系统、在线购物商城等&#xff0c;更是必须保证其高效稳定的性能。在这种背景下&#xff0c;优化…

K8S--安装Nginx

原文网址&#xff1a;K8S--安装Nginx-CSDN博客 简介 本文介绍K8S安装Nginx的方法。 1.创建Nginx目录及配置文件 mkdir -p /work/devops/k8s/app/nginx/{config,html} 在config目录下创建nginx.conf配置文件&#xff0c;内容如下&#xff1a; # events必须要有 events {wo…

C++ 设计模式之备忘录模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是备忘录模式 &#xff08;第17种模式&#xff09; 备忘录模式&#xff08;Meme…

【第七在线】利用大数据与AI,智能商品计划的未来已来

随着科技的快速发展&#xff0c;大数据和人工智能(AI)已经成为各行各业变革的重要驱动力。在服装行业&#xff0c;这两大技术的结合正在深刻改变着传统的商品计划方式&#xff0c;引领着智能商品计划的未来。 一、大数据与AI在智能商品计划中的角色 大数据为智能商品计划提供了…

leetCode-42.接雨水

&#x1f4d1;前言 本文主要是【算法】——算法模拟的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff…

AI嵌入式K210项目(15)-安全散列算法加速器

文章目录 前言一、什么是SHA256&#xff1f;实验原理 二、K210的安全散列算法加速器三、实验过程总结 前言 K210内置了丰富的加速器&#xff0c;包括神经网络处理器 (KPU)&#xff0c;AES(高级加密加速器)&#xff0c;APU 麦克风阵列语音数据加速计算处理器&#xff0c;现场可…

Docker技巧汇总

Docker技巧汇总 前言使用流程安装配置镜像管理创建并运行容器使用容器/常用命令导出和导入查看元数据挂载数据卷端口映射/转发VS Code连接Docker 前言 Docker 是一个开源的应用容器引擎&#xff0c;可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xf…

【Unity】URP报错Object reference not set to an instance of an object

使用URP之后&#xff0c;Unity报错&#xff1a;显示不正常 NullReferenceException: Object reference not set to an instance of an object UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.get_cameraStack () (at Library/PackageCache/com.unity.render-p…

项目上线存在的缓存问题以及存在的debugger和console.log等问题

下载uglifyjs-webpack-plugin插件 在vue.config文件中进行配置 publicPath: process.env.NODE_ENV production ? ./ : /,outputDir: n-sim-ipc-manage-build,productionSourceMap: false,configureWebpack: config > {//打包文件增加hashconfig.output.filename js/[nam…