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

 

原文地址:http://www.cnblogs.com/hmy22466/p/16826500.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性