MyBatis中的xml文件部分标签使用
1:parameterType、resultType
无非就是对象,map,其他类型
select id, supplier_id, member_id, province_code, province, city_code, city, district_code
from member_address
where id = #{id,jdbcType=INTEGER}
2:#{}和${}区别
- 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
- $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
- 方式能够很大程度防止sql注入。
- $方式无法防止Sql注入。
- $方式一般用于传入数据库对象,例如传入表名.
- 一般能用#的就别用$.
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
and is_default = #{is_default}
and namelike '${name}%'
3:转义字符 在xml的sql语句中,不能直接用大于号、小于号要用转义字符
转义字符 | 符号 | 解释 |
---|---|---|
<; | < | 小于号 |
>; | > | 大于号 |
&; | & | 和 |
&apos; | ' | 单引号 |
" ; | " | 双引号 |
and created_at >= #{created_at}
4:choose 元素 MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系,choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似。
SELECT
product_outer_id
product_id
FROM
core_coupon
AND supplier_id = #{supplier_id}
AND activitie_id = #{activity_id}
5:trim 标签
prefix:在trim标签内sql语句加上前缀。
suffix:在trim标签内sql语句加上后缀。
suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。
prefixOverrides:指定去除多余的前缀内容
update core_member_group
operator_id = #{operator_id} ,
user_num = #{user_num} ,
group_name = #{group_name} ,
query = #{query} ,
where group_id = #{group_id} and supplier_id = #{supplier_id}
and operator_id = #{operator_id}
and is_delete = 0
6:foreach 标签 【MyBatis中的xml文件部分标签使用】例如where id in (1,2,3,4)必须放到数组里面,顺便提一下如果id的数组特别大的话,尽量不要用where in,in的返回是有上线的
select id, supplier_id, member_id, province_code, province, city_code, city
from core_member_address
and id = #{id}
and member_id in
#{item}
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- Android中的AES加密-下