| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.sf.mapper.SysUserInfoMapper">
- <!--在SQL语句中添加%通配符-->
- <select id="findByName1" resultType="com.sf.entity.SysUserInfo">
- SELECT *
- FROM sys_user_info
- WHERE real_name LIKE #{realName}
- </select>
- <!--${} 是一种拼接字符串的形式,有安全风险, 可能会造成SQL注入-->
- <select id="findByName2" resultType="com.sf.entity.SysUserInfo">
- SELECT *
- FROM sys_user_info
- WHERE real_name LIKE '${realName}'
- </select>
- <!--CONCAT('%',#{realName},'%') 可以避免SQL注入,同时可以把%通配符放到sql语句中,不用每次测试的时候添加。
- 最推荐
- -->
- <select id="findByName3" resultType="com.sf.entity.SysUserInfo">
- SELECT *
- FROM sys_user_info
- WHERE real_name LIKE CONCAT('%',#{realName},'%')
- </select>
- <!--CONCAT('%',${realName},'%') 可以避免SQL注入,同时可以把%通配符放到sql语句中,不用每次测试的时候添加。-->
- <select id="findByName4" resultType="com.sf.entity.SysUserInfo">
- SELECT *
- FROM sys_user_info
- WHERE real_name LIKE CONCAT('%',${realName},'%')
- </select>
- <!--
- 使用双引号将%通配符括起来,可以不适用CONCAT函数
- -->
- <select id="findByName5" resultType="com.sf.entity.SysUserInfo">
- SELECT *
- FROM sys_user_info
- WHERE real_name LIKE "%"#{realName}"%"
- </select>
- <select id="findByIds" resultType="com.sf.entity.SysUserInfo">
- SELECT *
- FROM sys_user_info
- WHERE info_id IN
- <foreach collection="list" item="id" index="i" open="(" separator="," close=")">
- #{id}
- </foreach>
- </select>
- <select id="findByIds2" resultType="com.sf.entity.SysUserInfo">
- SELECT * FROM sys_user_info
- WHERE info_id BETWEEN #{start} AND #{end}
- </select>
- <!--
- ${}和#{}的区别:
- 编译过程中:
- ${} 先编译再执行,有SQL注入的风险
- #{} 是占位符,先进行预编译,再将值传入,最后执行
- 是否自动加引号:
- ${}:对应的变量不会自动添加单引号
- #{}:对应的变量会自动添加单引号
- 安全性:
- ${}:不能防止SQL注入
- #{}:能防止SQL注入
- -->
- </mapper>
|