zoukankan      html  css  js  c++  java
  • sql中#与$的区别

    一 、在这里用到了#{},使用#时:

    1、用来传入参数,sql在解析的时候会加上” “,当成字符串来解析 ,如这里 role_id = “roleid”;

    2、#{}能够很大程度上防止sql注入;

    延伸:

    1、用{roleId,jdbcType=INTEGER},那么sql在解析的时候值为roleId = roleId,执行时会报错;

    2、${}方式无法防止sql注入;

    3、$一般用入传入数据库对象,比如数据库表名;

    4、能用#{}时尽量用#{};

    注意:

    mybaties排序时使用order by 动态参数时需要注意,使用${}而不用#{};

    二、主要区别就是#带双引号,$不带

    例如:#{id}代表'id',${id}代表id

    下面是Mybatis @Select注解方式的sql

    @Select("select id,name from user where id=#{id}")
    public User getUser(@Param("id")long id);

    @Select("select id,name from user where id=${id}")
    public User getUSer(@Param("id")long id);

    如果id传入为1,则实际sql为

    select id,name from user where id='1'

    select id,name from user where id=1

    Mybaits方法有一种情况

    @Select("select id,name from user where id=#{id}")
    public User getUser(@Param("id") long id);

    @Select("select id,name from user where id=#{id}")
    public User getUser(long id);

    第二种因为传一个参数是可以省略@Param("")的,但是这种情况下不能使用${},

    传两个参数以上时,必须要写@Param("")

  • 相关阅读:
    Notepad++ 配置信息导出导入(快捷键配置导出导入等等)
    SQL 删除重复数据
    PostgreSQL Update 根据B表更新A表
    桌面应用基本创建流程
    Android shape和selector完全总结
    Android 第三方框架之Charts
    java常见五种排序方式
    Objective-c之字典精讲
    OC语言之---NSArray
    Objective-c编程之NSString精讲
  • 原文地址:https://www.cnblogs.com/xxl910/p/12713904.html
Copyright © 2011-2022 走看看