zoukankan      html  css  js  c++  java
  • mybatis.xml文件中#与$符号的区别以及数学符号的处理

    1.

    #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

    使用#传入参数是,sql语句解析是会加上"",比如  select * from table where name = #{name} ,传入的name为小李,那么最后打印出来的就是

    select * from table where name = ‘小李’,就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的。

    另外一种场景是,如果你要做动态的排序,比如  order by   column,这个时候务必要用${},因为如果你使用了#{},那么打印出来的将会是

    select * from table order by  'name'  ,这样是没用。

    即:能用#就最好不用$.

    2.

    如果在mapper.xml里使用>,<,>=,<=等能破坏xml格式的符号,会引起
    mybaits无法正常解析xml文件。

    解决方法是将sql语句写在<![CDATA[sql语句]]>中
    <select id="test" resultType="java.lang.Integer">
    <![CDATA[
    select 1<2
    ]]>
    </select>

  • 相关阅读:
    基于vue的购物车清单
    圣杯布局和双飞翼布局
    正则限制input负数输入
    vue.js devtools图标不亮
    将二维数组转换成一维数组(基于reduce)
    基于PROMISE解决回调地狱问题
    封装AJAX库(参考JQ)
    for in和for of的区别
    抢购倒计时的实现
    git clone --depth=1 后获取其他分支
  • 原文地址:https://www.cnblogs.com/cc-java/p/7136586.html
Copyright © 2011-2022 走看看