热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

简单了解javaibatis#及$的区别和用法

这篇文章主要介绍了简单了解javaibatis#及$的区别和用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、#和$两者含义不同

#:会进行预编译,而且进行类型匹配;

$:不进行数据类型匹配。

示例:变量name的类型是string, 值是"张三"

$name$ = 张三
#name# ='张三'

因此使用$就会报错,若要使用$的话,需要修改为'$name$';

2、两者的实现方式不同

2.1)$ 作用相等于是字符串拼接,

select * from users where name= $name$

等效于

StringBuffer sb = newStringBuffer(256);
sb.append("select * from users where name=").append(name);
sb.toString();

2.2)# 作用相当于变量替换

select * from users where name = #name#

等效于

prepareStement=stmt.createPrepareStement("select * from users where name = ?")
prepareStement.setString(1,'张三');//自动进行java类型和jdbc类型转换

3、#和$使用场景不同

3.1)变量的传递,必须使用#。可以防止sql注入,#是用prepareStement,提示效率

#方式一般用于传入添加/修改的值或查询/删除的where条件

3.2)$只是简单的字符拼接而已,对于非变量部分,那只能使用$,实际上,在很多场合,$也是有很多实际意义的

$方式一般用于传入数据库对象(如传入表名)

例如:

  • select * from $tableName$ 对于不同的表执行统一的查询
  • update $tableName$ set name = #name# 每个实体一张表,改变不用实体的状态

特别说明,$只是字符串拼接,所以要特别小心sql注入问题。

3.3)能同时使用#和$的时候,最好用#

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文详细列举了软件开发中常见的功能测试要点,涵盖输入框、搜索、添加/修改、删除、文件上传下载等多个方面,旨在帮助测试人员全面覆盖测试需求,确保软件质量。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 本文详细解析了 SUCTF 2019 中的 EasySQL 题目,重点探讨了堆叠注入与 UNION 注入的区别及其应用条件。 ... [详细]
  • API网关作为微服务架构中的关键组件,扮演着系统与外部世界交互的唯一接口角色。它不仅封装了系统的内部复杂性,还为不同客户端提供了个性化的API接口。本文将探讨API网关的重要性及其核心功能。 ... [详细]
  • Pikachu SQL注入实战解析
    作为一名网络安全新手,本文旨在记录个人在SQL注入方面的学习过程与心得,以备后续复习之用。通过逐步深入的学习,力求掌握每个知识点后再向下一个挑战迈进。 ... [详细]
  • 深入解析Apache SkyWalking CVE-2020-9483 SQL注入漏洞
    本文详细探讨了Apache SkyWalking中的SQL注入漏洞(CVE-2020-9483),特别是其影响范围、漏洞原因及修复方法。Apache SkyWalking是一款强大的应用性能管理工具,广泛应用于微服务架构中。然而,该漏洞使得未经授权的攻击者能够通过特定的GraphQL接口执行恶意SQL查询,从而获取敏感信息。 ... [详细]
  • .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了
    .NETCore中的一个接口多种实现的依赖注入与动态选择看这篇就够了最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • Waymo大规模采购FCA车型,软银巨资加码Cruise,无人驾驶商业化步伐加快
    近期,无人驾驶领域迎来两项重大进展:软银以22.5亿美元投资通用汽车旗下的Cruise Automation,同时Waymo宣布向菲亚特克莱斯勒采购62000辆厢式车。这些动向不仅提升了行业信心,也为无人驾驶技术的商业化铺平了道路。 ... [详细]
  • 本文探讨了如何在FastAPI中有效使用嵌套依赖注入,通过具体示例展示了如何优化API设计,提高代码的可维护性和复用性。 ... [详细]
  • 本文旨在深入探讨Java代理模式的基本概念与实际应用场景,通过实例分析如何利用代理模式在不修改原对象的前提下,实现功能的增强或限制。 ... [详细]
  • Vue项目中应用骨架屏实践
    在当前开发的项目中,由于登录过程涉及多次重定向,导致用户体验不佳。为了改善这一状况,本文介绍了如何使用vue-skeleton-webpack-plugin插件在Vue项目中实现骨架屏,以减少用户感受到的白屏时间。 ... [详细]
  • 本文探讨了几款Lua调试工具的特点和适用场景,特别是针对Lua 5.1和5.2版本。其中,Visual Studio插件因其高效性和强大的功能成为调试Lua 5.1的最佳选择。 ... [详细]
  • 本报告详细记录了在2018-2019学年网络安全技术课程中的实验过程,重点探讨了PC平台上逆向工程的基本方法和利用缓冲区溢出(BOF)漏洞的技术。通过一系列实验,加深了对计算机系统安全性的理解。 ... [详细]
  • 应用场景在开发中,我们经常需要把一些随时可能变化的属性配置到配置文件中,这样耦合性低,方便维护。SpringBoot在这方面为我们提供了很大的便捷,我们可以很轻易的将propert ... [详细]
author-avatar
du-qhy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有