查询
查看详情
1.参数占位符:
1) #{}: 执行SQL时,会将#{}占位符替换为?,将来自动设置参数值
2) ${}: 拼SQL。会存在SQL注入问题
3.使用时机:
参数传递,都使用#{}
*如果要对表名、列名进行动态设置,只能使用${进行sq|拼接。
2. parameterType:
*用于设置参数类型,该参数可以省略
3. SQL语句中特殊字符处理:
*转义字符(少量用这种方法)
*<![CDATA[内容]]>
条件查询
参数接受
1)散装参数:需要使用@Param("SQL中的参数占位符名称")
2)实体类封装参数
只需要保证SQL中的参数名和实体类属性名对应上,即可设置成功
3) map集合
*只需要保证SQL中的参数名和map集合的键的名称对应上,即可设置成功
动态查询
<if 条件判断>
逻辑表达式
</if>
*存在的问题:第一个条件不需要逻辑运算符
*解决方案:
1)使用恒等式(1=1)让所有条件格式都一样
2) <where>标签替换where关键字
删除
collection :键名称 item:对应sql表里面的字段 separator:分隔符
mybatis会将数组参数,封装为一个Map集合。
*默认: array =数组
*使用@Param注解改 变map集合的默认key的名称
参数传递
建议:将来都使用@Param注解来修改Map集合中
默认的键名,并使用修改后的名称来获取值,这样,
可读性更高