首页 > 其他分享 >ibatis中 $ 于 # 的 区别?

ibatis中 $ 于 # 的 区别?

时间:2023-04-20 14:03:09浏览次数:25  
标签:区别 传入 ibatis user str sql id


评:
ibatis中 $ 于 # 的 区别?
一个项目中在写ibatis中的sql语句时,where user_id in (#user_id_list# ), 运行时总是不行,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.
总结如下:
1.#是把传入的数据当作字符串,如#user_id_list#传入的是1,2,则sql语句生成是这样,in ('1,2') ,当然不可以

2.$传入的数据直接生成在sql里,如#user_id_list#传入的是1,2,则sql语句生成是这样,in(1,2) 这就对了.

3.#方式能够很大程度防止sql注入.

4.$方式无法方式sql注入.

5.$方式一般用于传入数据库对象.例如传入表名.

6.一般能用#的就别用$.
直观的说
#str# 出来的效果是 'str'
$str$ 出来的效果是 str

另外 ##只能用在特定的几个地方 $$可以用在任何地方 比如 order by $str$

你甚至可以直接写 $str$ 把 order by 这个字串放在str里传进来
今天花了N久,才把这个问题搞出来,郁闷下,不过出来了也挺开心的,终于搞定啦,嘿嘿~!~

标签:区别,传入,ibatis,user,str,sql,id
From: https://blog.51cto.com/u_16080829/6209519

相关文章

  • java线程同步和异步的区别
    在Java中,同步和异步是指多线程并发执行中的两种不同的机制。同步指的是线程之间的协作方式,即当一个线程在执行一个任务时,其他线程必须等待该线程执行完该任务后才能执行同一段代码。同步机制通常使用synchronized关键字或Lock对象进行实现,以保证多线程共享的资源同步访问。 ......
  • java线程同步和异步的区别
    在Java中,同步和异步是指多线程并发执行中的两种不同的机制。同步指的是线程之间的协作方式,即当一个线程在执行一个任务时,其他线程必须等待该线程执行完该任务后才能执行同一段代码。同步机制通常使用synchronized关键字或Lock对象进行实现,以保证多线程共享的资源同步访问。异步指的......
  • include与jsp:include区别
    我们都知道在jsp中include有两种形式,分别是<%@includefile=””%><jsp:includepage=””flush=”true”/> 以下是对include两种用法的区别主要有两个方面的不同;一:执行时间上:<%@includefile=”relativeURI”%>是在翻译阶段执行<jsp:includepage=”relati......
  • Git fetch和git pull的区别
    评:Git中从远程的分支获取最新的版本到本地有这样2个命令:1.gitfetch:相当于是从远程获取最新版本到本地,不会自动mergegitfetchoriginmastergitlog-pmaster..origin/mastergitmergeorigin/master以上命令的含义:首先从远程的origin的master主分支下载最新的版......
  • session,coolie,token区别
    一.seesion、cookie、token区别1.session和cookie的区别1.1、cookie数据存放在客户浏览器,session数据存放在服务器1.2、cookie不是很安全,别人可以分析存在在本地的cookie进行cookie欺骗,考虑到安全应该使用session1.3session会在一定时间内(有一个有效期)保存在服务器上,当访问增多......
  • C# 中break 和 continue 和 return在if语句和for循环中的区别
     break是跳出当前循环就是最近的一次循环,继续执行外循环,continue是指结束本次循环,这次循环后边的不执行了,继续最内层循环的循环break是跳到了外层循环,return则终止该方法,后边的都不执行 可以使用switch iffor进行测试......
  • UNION ALL用法 以及 UNION ALL和UNION的区别
    部分参考自文章:https://blog.csdn.net/a200822146085/article/details/119545374(CC4.0BY-SA版权协议)CSDN「我心依依旧」https://www.1keydata.com/cn/sql/sql-unionall.php SQLUnionAll SQL指令UNIONALL用法UNIONALL 这个指令的目的也是要将两个SQL语句的......
  • C#中关于地址的不同写法及区别
    1.根目录stringselectedPath=AppDomain.CurrentDomain.BaseDirectory+"temp\\MaterialFiles";if(!File.Exists(selectedPath)){System.IO.Directory.CreateDirectory(selectedPath);//不存在就创建目录......
  • SOA、SaaS就是云计算么,有什么区别,三者之间有什么关系?
    随着云计算的概念受到越来越多的人的推崇和论证,“云上的日子”看起来离我们越来越近了。几乎所有的IT厂商都不约而同了启动了各自的云计算战略。但是由于每个企业的战略出发点不同,企业推出的云计算概念也有所差别。如果仅仅以自己的产品和业务为标准,片面地将云计算理解为SOA或SaaS,......
  • 并行计算、分布式计算、集群计算和网格计算的介绍,以及主要有哪些区别?
    并行计算(ParallelComputing)并行计算或称平行计算是相对于串行计算来说的。并行计算(ParallelComputing)是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。......