五、ibatis中#和$的区别和使用
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)能同时使用#和$的时候,最好用#
最新文章
- Android studio 自定义打包apk名
- php 用 http post方法传输数据
- easy-ui 小白进阶史(一):加载数据,easy-ui显示
- Android课程---Activity中保存和恢复用户状态
- ExtJS入门教程05,grid的异步加载数据
- Main函数参数argc,argv说明
- mysql查看日志
- Python3 学习第四弹:编码问题(转载)
- NeatUpload上传控件在asp.net中的使用
- oracle中查找执行效率低下的SQL
- 1104. Don’t Ask Woman about Her Age(数论)
- SSL协议的握手过程
- wordpress开启用户注册
- linux为用户配置java环境变量
- 003_JS基础_面向对象基础
- java之MVC开发模式
- UE导航系统详
- elasticsearch-HQ 安装与使用
- dup2替换
- unity3d热更新插件uLua学习整理