千家信息网

iBATIS如何使用$和#

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章主要为大家展示了"iBATIS如何使用$和#",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iBATIS如何使用$和#"这篇文章吧。我们在使用iBA
千家信息网最后更新 2024年11月25日iBATIS如何使用$和#

这篇文章主要为大家展示了"iBATIS如何使用$和#",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"iBATIS如何使用$和#"这篇文章吧。

我们在使用iBATIS时会经常用到#这个符号。

比如:

sql 代码

select * from member where id =#id#

然后,我们会在程序中给id这个变量传递一个值,iBATIS会自动将#id#转成我们传递的内容。

但是我最近碰到一个奇怪的问题。我在批量删除或修改的时候,居然SQL失效了。

SQL如下:

sql 代码

update user set flag=#flag# where id in (#id#)      delete from user where id in (#id#)

传递的id为1,2,3。但是数据却没有任何的修改。

后来查找了半天,原来原因就是这个#的问题。因为iBATIS默认会把"#"中间的变量作为字符串来处理。这样,就会出现这样的SQL


sql 代码

update user set flag='1' where id in ('1,2,3')          delete from user where id in ('1,2,3')

这样的SQL数据库当然是不会执行的。那我们只有绕开iBATIS了吗?

其实不用,iBATIS其实还提供了另外一种方式,那就是使用$来传递值。你使用$将你的变量括起来,iBATIS不会给这个变量做任何的处理,直接生成你要的SQL

SQL代码

update user set flag=$flag$ where id in ($id$)      update user set flag=1  where id in (1,2,3)      delete from user where id in ($id$)   delete from user where id in (1,2,3)

还可以用ibatis的iterate解决:

SQL:

﹤select id="test" parameterClass="java.util.List" resultClass="test.Roadline"﹥          select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in           ﹤iterate open="(" close=")" conjunction=","﹥              #value[]#          ﹤/iterate﹥      ﹤/select﹥
List list = new ArrayList();      list.add("aaa");      list.add("bbb");                        List rsList = sqlMap.queryForList("roadline.test", list);

生成的SQL:

select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in (?,?)

$中间的变量就是直接替换成值的

#会根据变量的类型来进行替换

比如articleTitle的类型是string, 值是"标题"的时候

$articleTitle$ = 标题

#articleTitle# = '标题'

如果一个字段的名字不规范带有#,那么在﹤select ...﹥ select name# from reader where id=#id#...﹤/select﹥语句中会报错,我看过有人问过这个问题,说是name####但是还是不能解决无法对带#的字段的查询。 解决办法肯定是有的。比如,你可以把这个字段当做一个参数来传递给ibatis。然后用$$把这个变量括起来。

以上是"iBATIS如何使用$和#"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

变量 代码 内容 字段 就是 标题 篇文章 问题 数据 时候 类型 处理 学习 帮助 生成 不用 办法 原因 参数 只有 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国家电网网络安全事件有哪些 购物软件开发企业应该怎么做 星巴克数据库设计说明书 具有口碑的数据库防火墙 电子记账本软件开发 佛山博砾软件开发有限公司 微信游戏用什么软件开发 软件开发完工后奖金发放文书 有源码和数据库的织梦如何安装 湛江手机软件开发外包 cnki 系列数据库 恐龙岛什么服务器好玩 软件开发服务合同下载 争做网络安全小卫士活动方案 ios软件开发工程师工资 长沙网络安全产业园落户 财务分析数据库 网络安全反诈防骗的手抄报怎么画 谷歌云台湾服务器 lol显示正在连接服务器失败 网络安全宣传周班会题目 网络安全工作规划或计划制度 软件开发需要招哪些人 中国网络安全信息组长 未来互联网络技术研究中心 中兴网络安全岗位 江苏智能软件开发厂家报价 空间数据库如何存储信息 小学生网络安全教育感言 网络技术发展与现状体会收获
0