• 五、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)能同时使用#和$的时候,最好用#

    细水长流,打磨濡染,渐趋极致,才是一个人最好的状态。
  • 相关阅读:
    SpringCache使用
    SpringDataRedis使用
    Spring data jpa使用
    webpack的安装
    Vue基本使用
    Swagger使用
    gulp常用插件之gulp-notify使用
    gulp常用插件之gulp-beautify使用
    gulp常用插件之gulp-uglify使用
    gulp常用插件之gulp-size使用
  • 原文地址:https://www.cnblogs.com/jiarui-zjb/p/9537470.html
Copyright © 2020-2023  润新知