zoukankan      html  css  js  c++  java
  • 五、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)能同时使用#和$的时候,最好用#

    细水长流,打磨濡染,渐趋极致,才是一个人最好的状态。
  • 相关阅读:
    bottombordertransition – 从中​​间扩展
    P3605 [USACO17JAN]Promotion Counting P
    CF817F MEX Queries
    2021.11.16模拟总结
    动态开点线段树学习笔记
    2021 NOIP 游记
    EntiyFramework :Update model from database引起的两个问题
    .NET Attribute(特性)的作用与用法——几句话解决Attribute使用的困惑
    前端CSS
    前端知识之HTML内容
  • 原文地址:https://www.cnblogs.com/jiarui-zjb/p/9537470.html
Copyright © 2011-2022 走看看