<if test="data.tatalAmount != null and data.totalAmount !='' ">
<if test="data.tatalAmount != null and data.totalAmount !='' or tatalAmount==0 ">
and total_Amount=#{data.totalAmount}
</if>
</if>
复制代码
2,规定传入参数的类型
<if test="data.tatalAmount != null and data.totalAmount !='' ">
and total_Amount=#{data.totalAmount,jdbc.Type=DECIMAL}
</if>
复制代码
3,Mybatis中#{}和${}区别
#{}是预编译处理,像传进来的数据会加个" "(#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号)
${}就是字符串拼接。直接替换掉占位符。$方式一般用于传入数据库对象,例如传入表名。
使用${}的话会导致sql注入。什么是sql注入呢?比如select * from user where id = #{value}
value本应该是一个数值。然后如果对方传过来的是 001 and name = tom.这样不就相当于多加了一条sql语句进去。
把SQL语句直接写进来了。如果是攻击性的语句呢?001;drop table user,直接把表给删了
所以为了防止 SQL 注入,能用 #{} 的不要去用 ${}