mybatis 中 ${} 和 #{} 的区别,以及转义符

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

 

(2)${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

 

注:

(1)简单类型就是不是自己定义的类型

 

(2)模糊查询:'%${value}%' 不可漏掉单引号

 

mybatis 中的转义符问题:

在mapper  ***.xml中的sql语句中,不能直接用大于号、小于号要用转义字符

解决方法:

 

1、转义字符串

小于号    <    <

大于号    >    >

和    & &

单引号    '    '

双引号    "    "

2、使用<![CDATA[  你的sql语句 ]]>(sql语句中的<where><if>等标签不会被解析)

 如:

 <![CDATA[

        select * from 

      (select t.*, ROWNUM as rowno from tbl_user t where ROWNUM <= #{page.end,jdbcType=DECIMAL}) table_alias

      where table_alias.rowno >#{page.start,jdbcType=DECIMAL}

     ]]>   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值