【笔记】MyBatis参数处理方式

前言

MyBatis参数处理方式

多个参数的处理方式

默认方式

  • 当Java向MyBatis传递了一组参数时,根据参数的传递顺序,MyBatis会自动创建一个Map集合来存储参数
  • 每个参数会向Map中创建2个键值对,第一个参数的键名分别是arg0param1,值为参数值,以此类推

src/main/java/com/mapper/UserMapper.java

1
void test(int id, String name)

src/main/resources/com/mapper/UserMapper.xml

1
2
3
4
5
6
7
8
9
10
11
<select id="test">
SELECT * FROM user
WHERE id = #{arg0}
AND name = #{arg1};
</select>

<select id="test">
SELECT * FROM user
WHERE id = #{param1}
AND name = #{param2};
</select>

修改默认

  • 可以通过@Param()注解修改Map中以arg开头的键名

src/main/java/com/mapper/UserMapper.java

1
void test(@Param("id") int id, @Param("name") String name)

src/main/resources/com/mapper/UserMapper.xml

1
2
3
4
5
6
7
8
9
10
11
<select id="test">
SELECT * FROM user
WHERE id = #{id}
AND name = #{name};
</select>

<select id="test">
SELECT * FROM user
WHERE id = #{param1}
AND name = #{param2};
</select>

单个数据的处理方式

  • 无论什么类型的数据传递到MyBatis事时,都会被MyBatis封装为Map集合

自动封装

  • 如果是以下类型,默认会自动封装Map集合
    • POJO类型
    • Map集合
    • 其他类型

Collection的封装方式

  • 键为arg0,值为集合
  • 键为collection,值为集合

List的封装方式

  • 键为arg0,值为集合
  • 键为collection,值为集合
  • 键为list,值为集合

数组的封装方式

  • 键为arg0,值为数组
  • 键为array,值为数组

完成

参考文献

哔哩哔哩——黑马程序员