Mybatis 中 sql 语句的占位符 #{} 和 ${}
                        
                            时间:2021-07-01 10:21:17
                            帮助过:30人阅读
							                        
                     
                    
                    
                     通过ID查询一个用户 -->
    <select id="findUserById" parameterType="Integer" resultType="com.msym.beans.User">
        select * from user where id = #{v}
    </select>
    
    <!-- //根据用户名称模糊查询用户列表
    #{}    select * from user where id = ?    占位符  ? ==  ‘五‘
    ${}    select * from user where username like ‘%五%‘  字符串拼接  
    
     -->
    <select id="findUserByUsername1" parameterType="String" resultType="com.msym.beans.User">
        select * from user where username like ‘%${value}%‘
    </select>
    <select id="findUserByUsername2" parameterType="String" resultType="com.msym.beans.User">
        select * from user where username like "%"#{v}"%"
    </select>
  上面是 user 类对应的 user.xml 文件,用于编写 sql 语句,避免了硬编码。
  id 为 findUserByUsername1 的采用的是 ${} 占位符,id 为findUserByUsername2 采用的是 #{} 占位符,
  前者生成的 sql 为 select * from user where username like ‘%XXX%’;
  后者生成的 sql 语句是 select * from user where username like "%"‘XXX‘"%",(这样的格式我还没在 sql 中写过,但是的确能 run)
(XXX 是调用该查询是传入的参数)注意这两者的不同,前者不能防止 sql 注入,后者能防止。
Mybatis 中 sql 语句的占位符 #{} 和 ${}
标签:integer   不同   rom   jdb   type   bsp   占位符   sel   nbsp