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:#{}和${}区别
  1. 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
  2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
  3. 方式能够很大程度防止sql注入。
  4. $方式无法防止Sql注入。
  5. $方式一般用于传入数据库对象,例如传入表名.
  6. 一般能用#的就别用$.
    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}

    推荐阅读