【SSM】Mybatis小技巧汇总

news2024/11/20 9:24:51

Mybatis

  • 技巧一:#{} 和 ${} 的区别
    • 使用 ${} 特例一(排序)
    • 使用 ${} 特例二(表连接)
    • 使用 ${} 特例三(批量删除)
  • 技巧二:typeAliases 别名机制
    • 别名 Alias 性质
  • 技巧三:mappers
    • mapper 标签
    • package 标签(最常用)
  • 技巧四:IDEA 配置文件模板
  • 技巧五:插入数据时获取自动生成的主键

mybatis 作为半自动化ORM(Object Relational Mapping)持久化层框架,使用时存在一些技巧。

技巧一:#{} 和 ${} 的区别

#{} 和 ${} 的区别:

#{}:底层使用PreparedStatement
特点:先进行SQL语句的编译,然后给SQL语句的占位符问好 ? 传值。可以避免SQL注入的风险

${}:底层使用Statement
特点:先进行SQL语句的拼接,然后再对SQL语句进行编译。存在SQL注入的风险。

优先使用 #{},这是原则。避免SQL注入的风险。

使用 ${} 特例一(排序)

下面是使用 ${} 的例子,由外界选择性排序(选择asc或者desc),可以选择 ${} ,以防止SQL语句错误。

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

注意:如果需要使用SQL 语句的关键字放到SQL 语句中,只能使用 ${} ,因为#{} 是以值的形式放到SQL语句当中。

使用 ${} 特例二(表连接)

有时为了加快搜索效率,日志表会有很多个,以末尾时间日期区分表。

在这里插入图片描述

当需要对表进行操作的时候,要有一定代码复用的话,可以进行表名的拼接。这时,应该使用 ${} 去使用参数。

在这里插入图片描述

在这里插入图片描述

使用 ${} 特例三(批量删除)

实现批量删除有两种写法:

1. 使用 or
2. 使用 in

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

技巧二:typeAliases 别名机制

类型别名是指:可以为 Java 类型设置一个缩写的名字。
它仅用于 XML 文件的配置,意在降低冗余的全限定类名书写。

<typeAliases>
        <typeAlias type="com.ncpowernode.mapper.bean.Log" alias="log"/>
    </typeAliases>

在这里插入图片描述
在这里插入图片描述
也可以指定包名,Mybatis 会在包名下搜索需要的 Java Bean 类。(利用package 标签)

<package name="com.ncpowernode.mapper.bean"/>

别名 Alias 性质

  1. 别名不区分大小写;
  2. typeAlias 标签中的 alias 属性可以省略,默认是类名;
  3. Mapper.xml 文件中 mapper 标签下的 namespace 属性不可使用别名。

技巧三:mappers

mapper 标签

mapper 标签下的三个属性:

		<mapper resource="LogMapper.xml"/>要求类路径下必须有:LogMapper.xml
        <mapper url="file:///d:/LogMapper.xml"/>要求在d:/下有LogMapper.xml 文件
        <mapper class="全限定接口名,带有包名"/>
  • resource:这种方式是从类的根路径下开始查找资源。采用这种方式的话,配置文件需要放到类路径当中;
  • url:这种方式是一种绝对路径的方式,这种方式不要求配置文件必须放到类路径当中,只要提供一个绝对路径(使用极少);
  • class:这个位置提供的是mapper 接口的全限定接口名,必须带有包名。
<mapper class="com.ncpowernode.mapper.dao.LogMapper"/>
如果你class 指定是:com.ncpowernode.mapper.dao.LogMapper
那么mybatis框架会自动去com/ncpowernode/mapper/dao目录下查找LogMapper.xml文件。

注意:也就是说,如果你采用 class 的方式,那么必须保证 LogMapper.xml 文件和 LogMapper 接口必须在同一个目录下,且名字一致。

在这里插入图片描述

最后编译后到目标目录其文件所在位置:

在这里插入图片描述

注意:建软件包用的是 ’ . '分隔,而建目录用 ’ / ’ 分隔,资源根中建的就是目录,建的目录要和 class 所匹配。

package 标签(最常用)

将包内的接口全部映射为映射器。

<package name="com.ncpowernode.mapper.dao"/>
将com.ncpowernode.mapper.dao 包下的接口全部映射为映射器。

在这里插入图片描述

技巧四:IDEA 配置文件模板

IDEA 中可以对各种文件创建模板,这样等下次直接创建就不用写重复的代码了。

在这里插入图片描述

应用后在下面位置可以进行创建:

在这里插入图片描述

技巧五:插入数据时获取自动生成的主键

insert 标签下的两个属性:

  1. useGeneratedKeys="true":使用自动生成的主键值
  2. keyProperty="id":指定主键值赋值给对象的哪个属性,这个就表示将主键值赋值给 XX 对象的 id 属性。

利用这两个insert 标签下的属性,可以获取插入数据的自动生成主键,该值存在对应的 bean 对象中;

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

串级PID控制原理-1

串级计算机控制系统的典型结构如图1所示&#xff0c;系统中有两个PID控制器&#xff0c;Gc2(s)称为副调节器传递函数&#xff0c;包围Gc2(s)的内环称为副回路。Gc1(s)称为主调节器传递函数&#xff0c;包围Gc1(s)的外环称为主回路。主调节器的输出控制量u1作为副回路的给定量R2…

Vuex基本概念

一、基本概念vuex&#xff1a;为了解决不关联的组件整个网站状态数据共享问题&#xff0c;专为Vue.js开发的状态管理模式。采用集中式存储管理应用的所有组件状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。vuex有5个主要成员&#xff1a;state&#xff1…

DAMA数据管理知识体系指南之数据架构管理

第4章 4.1 简介 数据架构管理是定义和维护如下规范的过程&#xff1a; 提供标准的、通用的业务术语/辞典。 表达战略性的数据需求。 为满足如上需求&#xff0c;概述高层次的整合设计。 使企业战略和相关业务架构相一致。 数据架构是用于定义数据需求、指导对数据资产的整合和…

【C++】从0到1入门C++编程学习笔记 - 提高编程篇:STL常用容器(vector容器)

文章目录一、vector基本概念二、vector构造函数三、vector赋值操作四、vector容量和大小五、vector插入和删除六、vector数据存取七、vector互换容器八、vector预留空间一、vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector…

Discord多账号抢白名单,如何避免账号关联被封号?

相信玩NFT项目的都不会对Discord陌生&#xff0c;现在NFT的项目都会开Discord伺服器&#xff0c;并且将内容公告在上面、在伺服器里互动&#xff0c;所以如果你想参与NFT的世界&#xff0c;学会使用Discord是一件非常重要的事情。 东哥前2天也出了关于discord如何使用、如何抢白…

很多网站、APP 前段时间一下都变灰了。 先来感受一下变灰后的效果。

很多网站、APP 前段时间一下都变灰了。 先来感受一下变灰后的效果。 这种灰色的效果怎么实现的呢&#xff1f;如何做到图片、文字、按钮都变灰的效果呢&#xff1f; 方案 1&#xff0c;换一套灰色的 UI&#xff0c;那显然成本太大了&#xff0c;用脚指头想一想就知道不太可能…

C语言---选择排序和堆排序

文章目录前言一、简单选择排序1.简介2.算法思路3.代码实现二、堆排序1.简介2.算法思路3.代码实现总结前言 堆排序是选择排序的一种&#xff0c;今天我们讲解一下堆排序和简单选择排序 一、简单选择排序 1.简介 选择排序&#xff08;Selection sort&#xff09;是一种简单直观…

ZoomCharts JavaScript 1.20.2 Crack

深入探索数据 令人惊叹的数据可视化方式 - 这里是 ZoomCharts JavaScript 图表的不同交互可能性和功能。 内容向下钻取和向上钻取 深入研究特定数据点或获得更大的图景。通过放大或缩小与图表进行物理交互&#xff0c;浏览不同的数据级别。 数据过滤 选择一个或多个数据点查看具…

【软件测试面试】他凭什么能在面试中狂揽10个offer?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 小高&#xff1a; 记…

2023年屏蔽iOS16系统更新,去除小红点,最新方法

昨天开始&#xff0c;屏蔽iOS系统更新的旧文件已经过期&#xff0c;许多老粉收到了更新提醒&#xff0c;因此现在给大家带来最新的屏蔽文件 这个文件可以屏蔽iOS系统更新和提醒&#xff0c;防止手机自动下载更新。 这个方法支持所有 iPhone 和 iPad&#xff0c;支持所有 iOS 和…

# Android未来几年发展规划【纵横发展】

前言 如果你是移动开发人员&#xff0c;那么首先要跟上技术的最新发展趋势&#xff0c;并时刻关注新事物&#xff0c;即使有时你甚至需要质疑自己的信仰。应用开发人员一方面一直在努力想办法简化和缩短开发过程&#xff0c;另一方面也在努力构建最佳的设计和用户体验。每年我…

【MPP数据库】StarRocks分区、分桶探索与实践

1.先学习一下StarRocks的架构图&#xff1a; 2.基本概念 2.1 Row & Column 一张表包括行&#xff08;Row&#xff09;和列&#xff08;Column&#xff09;。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column 可以分为两大类&#xff1a;Key 和 Value…

leetcode刷题记录总结-7.递归回溯算法(进行中)

文章目录零、回溯算法理论总览什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板一、组合问题[77. 组合](https://leetcode.cn/problems/combinations/)题解递归实现组合型枚举&#xff1a;每个点选与不选子集问题模板组合问题解决思路回溯思路&#xff1a;遍…

GAMES101笔记:辐射度量学(上)

Radiometry 辐射度量学 如何描述光照&#xff0c;定义了一系列的方法和单位准确度量光的空间属性&#xff1a; Radiant fluxintensityirradianceradiance 以物理正确的方式进行光照计算 Radiant Energy and Flux (Power) Radiant Energy 定义 Radiant Energy 是电磁辐射的能…

6、数据的合并

目录 一、添加变量即横向合并。 二、添加个案即纵向合并 在实际工作中&#xff0c;为了提高效率&#xff0c;经常需要将一份数据分成几部分分别录入&#xff0c;或为了便于分析&#xff0c;又将几个数据文件合并成一个总的数据文件。为此&#xff0c;SPSS提供了两种合并数据文…

【7】【vue】【vue3】

1、项目结构&#xff1a; asserts用来存放静态资源的&#xff08;一些图片&#xff0c;公共的css文件等&#xff09; components用来存放vue的组件&#xff08;vue是组件开发&#xff09; App.vue是主入口组件 &#xff08;根组件&#xff0c;所有组件都是从这里开始&#xff…

在 PyTorch 中使用梯度检查点在GPU 上训练更大的模型

作为机器学习从业者&#xff0c;我们经常会遇到这样的情况&#xff0c;想要训练一个比较大的模型&#xff0c;而 GPU 却因为内存不足而无法训练它。当我们在出于安全原因不允许在云计算的环境中工作时&#xff0c;这个问题经常会出现。在这样的环境中&#xff0c;我们无法足够快…

万向节锁问题

以前一直听说过万向节锁当时觉得问题太难就没去认真分析最近在B站找了一些视频看懂了。简单来说旋转是有顺序的&#xff0c;比如transform面板有三个旋转分量&#xff0c;你先调整y&#xff0c;再调整x&#xff0c;最后调整z按照正常思路来说&#xff0c;调整x轴是在y轴旋转的基…

想成为数据分析师,看这里,数据分析必备的43个Excel函数

目录 前言 函数分类&#xff1a; 关联匹配类清洗处理类逻辑运算类计算统计类时间序列类 前言 Excel是我们工作中经常使用的一种工具&#xff0c;对于数据分析来说&#xff0c;这也是处理数据最基础的工具。 很多传统行业的数据分析师甚至只要掌握Excel和SQL即可。 对于初学者…

【DataX】datax | datax-web | win搭建datax-web环境

一、环境准备 1、jdk8 2、maven 3、mysql7 4、python3 5、window10 6、idea 7、2345解压&#xff08;win支持tar.gz解压&#xff09; 8、git 二、操作步骤 1、datax操作步骤 1&#xff09;下载datax http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 2&am…