1.参数占位符
1. #{} :执行SQL时,会将 #{}占位符替换为?,将来自动设置参数值
2. ${} :拼SQL,会存在SQL注入问题
3. 使用时机:
参数传递都用 #{},如果要对表名、列名进行动态设置,只能使用${}进行sql拼接。
2.parameterType:
用于设置参数类型,可以省略
3.SQL语句中特殊字符处理
可以使用转义字符 < 注意要加分号
也可以使用 <![CDATA[内容,如< ]]>
动态查询
有时候输入查询条件时,并不会把所有条件写上时,需要使用动态查询
原先的条件查询语句:
<select id="selectByCondition" resultType="com.xxxx.entity.Brand"> select * from tb_brand where status=#{status} and compant_name like #{companyName} and brand_name like #{brandName} </select>
动态查询语句:(加条件判断)
<select id="selectByCondition" resultType="com.xxxx.entity.Brand"> select * from tb_brand where <if test="status != null"> status=#{status} </if> <if test="companyName != null and companyName != ''" > and compant_name like #{companyName} </if> <if test="brandName!=null and brandName!=''"> and brand_name like #{brandName} </if> </select>
存在问题:如果第一个条件不存在的话就会报错
解决方案:1.添加恒等式
2.通过MyBatis提供的<where>标签来替换where这个关键字
到时候会自动判断,添加where 如果是第一个标签会帮我们主动去掉and
标签:xml,mapper,like,brand,查询,status,SQL,name From: https://www.cnblogs.com/hmy22466/p/16826500.html