zoukankan      html  css  js  c++  java
  • Mybatis中的mapper配置文件中占位符#{}和${}

    #{}:

    1.当参数类型为基本数据类型或者String的时候,即调用方法的时候传入的参数值就是个常量,这时候{}中的数值是可以任意名称代表。

    例如:当public List<User> selectUserByName(String name) 该方法中的参数是String类型 

    那当在mapper中写sql语句的时候可以以任何来代替,但一般为了阅读最好写对应的属性名称:

    select * from table_name where name=#{任意名} //最好写成username即User中对应的属性名

    2.当参数类型时自定义javaBean对象时候,只能写javaBean对象中对应的属性名

    例如:

      public void insertUser(User user)

      就只能写成insert into table_name values(#{id},#{username},#{age} )//只能是User对象中所对应的属性名称

    ${}:

    1.当参数是基本数据类型或者String时,{}中只能写value

    2.参数是javaBean对象时候 只能是属性

    注: ${}是连接符

    例: 当按名称进行模糊查询的时候  

    public List<User> selectUserByName(String name)

    select * from table_name where name like '%${value}%'  

    当然可以用#{},但是#{}只是表示占位符 ,当调用方法进行传值的时候需要传值加上%%即 selectUserByName(“%小%”

    但是${}的话是可以在传参的时候进行字符串拼接引起sql注入风险 如传值为"'%小%' or 1=1"

  • 相关阅读:
    题解 CF171G 【Mysterious numbers
    题解 P1157 【组合的输出】
    题解 P3955 【图书管理员】
    题解 P2036 【Perket】
    题解 CF837A 【Text Volume】
    题解 CF791A 【Bear and Big Brother】
    题解 CF747A 【Display Size】
    题解 P1332 【血色先锋队】
    题解 P2660 【zzc 种田】
    题解 P4470 【[BJWC2018]售票】
  • 原文地址:https://www.cnblogs.com/bingzhikun/p/4801090.html
Copyright © 2011-2022 走看看