Mybatis 与 JDBC 编程的比较 及#{}与${}的区别

news/2024/11/23 2:29:19/

1.数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

解决:

在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库链接。

2.Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java 代码。

解决:

将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。

3.向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能少,占位符需要和参数对应。

解决:

Mybatis 自动将 java 对象映射至 sql 语句,通过 statement 中的 parameterType 定义输入参数的类型。

4.对结果集解析麻烦,sql 变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成 pojo 对象解析比较方便。

解决:

Mybatis 自动将 sql 执行结果映射至 java 对象,通过 statement 中的 resultType 定义输出结果的类型。

#{}表示一个占位符号

通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换,

#{}可以有效防止 sql 注入。 #{}可以接收简单类型值或 pojo 属性值。 如果 parameterType 传输单个简单类

型值,#{}括号中可以是 value 或其它名称。

${}表示拼接 sql 串

通过${}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换, ${}可以接收简

单类型值或 pojo 属性值,如果 parameterType 传输单个简单类型值,${}括号中只能是 value。


http://www.ppmy.cn/news/19532.html

相关文章

Rust note

Rust 该文摘抄或总结自《Rust 权威指南》将持续跟进 基础篇 Hello, world! fn main() {println!("Hello, world!"); }变量声明 使用let 关键字进行声明: let 变量名: 类型; 也可以同时赋初始值: let 变量名: 类型 值; 编译器可对部分值的…

Service Mesh

Service Mesh 参考如下文章:可以将此文章看作为下面文章的结合: https://zhuanlan.zhihu.com/p/61901608 https://philcalcado.com/2017/08/03/pattern_service_mesh.html https://zhuanlan.zhihu.com/p/153105848?from_voters_pagetrue 微服务演化进…

【GIS】高分辨率遥感影像智能解译

1 绪论 随着航空科技工业的不断成熟与发展,我国遥感卫星研制能力不断攀升,发射数量逐年提高,在轨运行的遥感卫星为社会生产及居民日常生活提供了巨大的支持与便利。我国目前同时在轨运行的遥感卫星数量已超过60颗,每天获取并传回…

恶意代码分析实战 11 恶意代码的网络特征

11.1 Lab14-01 问题 恶意代码使用了哪些网络库?它们的优势是什么? 使用WireShark进行动态分析。 使用另外的机器进行分析对比可知,User-Agent不是硬编码。 请求的URL值得注意。 回答:使用了URLDownloadToCacheFileA函数&#…

Leetcode:46. 全排列、47. 全排列 II(C++)

目录 46. 全排列 问题描述: 实现代码与解析: 回溯: 原理思路: 47. 全排列 II 题目描述: 实现代码与解析: 回溯: 原理思路: 46. 全排列 问题描述: 给定一个不含…

Linux|奇怪的知识---CPU温度监控

前言: 最近我的台式机电脑CPU风扇由于积灰严重,噪音比较大,因此更换了CPU风扇。 更换比较简单没什么好说的,但我想清楚的知道我的CPU温度到底是多少,进而知道这个新风扇是否能给CPU一个清凉的环境,因此需…

SaaS是什么,目前主流的国内SAAS平台提供商有哪些?

SaaS是什么,目前主流的国内SAAS平台提供商有哪些?SaaS这个概念近两年可谓说是十分火热,尤其是后疫情时代。 但还是有很多人对SaaS这个名词云里雾里,被碎片化的信息裹挟,并没有真正意义上理解SaaS的概念。 这篇就综合…

数学小抄: 李群李代数再回顾 [SLAM十四讲]

前言 最近阅读了高翔老师的视觉SLAM十四讲, 也算是了解了当下机器人领域最炙热的机器人领域前沿研究问题大概是怎么样的数学问题. 不得不说视频与书籍真的是深入浅出. 所有第三库无痛安装教程: 知乎链接 SLAM 主要解决的偏颇地说就是在求解一个非线性系统状态方程, 相应的后端…