ibatis中d的 ¥ 和 # 的差别
添加时间:2013-7-1 点击量:
在Ibatis中我们应用SqlMap进行Sql查询时须要引用参数,在参数引用中碰到的符号#和¥之间的差别,#可以进行预编译,进行类型匹配,而¥不进行数据类型匹配。
总结如下:
1.#是把传入的数据算作字符串,如#user_id_list#传入的是1,2,3,则sql语句生成是如许,in (1,2,3) ,当然不成以
2.¥传入的数据直接生成在sql里,如#user_id_list#传入的是1,2,3,则sql语句生成是如许,in(1,2,3) 这就对了.
3.#体式格式可以或许很大程度防止sql注入.
4.¥体式格式无法体式格式sql注入.
5.¥体式格式一般用于传入数据库对象.例如传入表名.
6.一般能用#的就别用¥.
直观的说
#str# 出来的结果是 str
¥str¥ 出来的结果是 str
别的 ##只能用在特定的几个处所 ¥¥可以用在任何处所 比如 order by ¥str¥
你甚至可以直接写 ¥str¥ 把 order by 这个字串放在str里传进来 我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
在Ibatis中我们应用SqlMap进行Sql查询时须要引用参数,在参数引用中碰到的符号#和¥之间的差别,#可以进行预编译,进行类型匹配,而¥不进行数据类型匹配。
总结如下:
1.#是把传入的数据算作字符串,如#user_id_list#传入的是1,2,3,则sql语句生成是如许,in (1,2,3) ,当然不成以
2.¥传入的数据直接生成在sql里,如#user_id_list#传入的是1,2,3,则sql语句生成是如许,in(1,2,3) 这就对了.
3.#体式格式可以或许很大程度防止sql注入.
4.¥体式格式无法体式格式sql注入.
5.¥体式格式一般用于传入数据库对象.例如传入表名.
6.一般能用#的就别用¥.
直观的说
#str# 出来的结果是 str
¥str¥ 出来的结果是 str
别的 ##只能用在特定的几个处所 ¥¥可以用在任何处所 比如 order by ¥str¥
你甚至可以直接写 ¥str¥ 把 order by 这个字串放在str里传进来
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
#str# 出来的结果是 str
¥str¥ 出来的结果是 str
别的 ##只能用在特定的几个处所 ¥¥可以用在任何处所 比如 order by ¥str¥
你甚至可以直接写 ¥str¥ 把 order by 这个字串放在str里传进来