styleyan/javaNote

myBatis参数处理

Opened this issue · 2 comments

多参数传递3种方式

  1. Javabean方式(多参数处理-封装POJO类)
    如果多个参数是我们业务逻辑的数据模型,我们就可以直接传入pojo,把参数封装成一个实体类,通过 new xxxx(param1,...)后在传给myBatis

  2. map(多参数处理)
    如果参数个数比较少,而且没有对应的Javabean,可以封装成Map

  3. @param
    由于以上两种方式需要手动创建Map及对象,不够简洁,可以使用 @param 注解,它可以明确指定封装参数时map的key。

// xml
<select id="getPerson" resultType="person">
   select * from person where username=#{userName} and gender=#{gender}
</select>
// 接口 (@Param("xxx") 必须要和 xml 的#{"xxx"} 保持一致
public Person getPerson(@Param("userName") String username, @Param("gender") String gender);
// Impl
Person person = getPerson("wangwu", "f")
参数处理总结:
  1. 使用map传递参数,业务可读性差
  2. @param, 受到个数(n) 的影响,建议n<5时,为最佳的传参方式
  3. 以上参数的处理各有利弊,参数>5,建议用Javabean方法

foreach元素:

特点: 循环遍历集合,支持数组饿List、Set接口,对其提供遍历功能

<select id="getPerson" resultType="person">
    select * from person where id in
    <foreach collection="array" item="id" index="i" open="(" open=")" separator=",">
           #{id}
    </foreach>
</select>
  • collection: 遍历对象
  • item: 每次循环的遍历值
  • index: 索引
  • open && close: 开始和结束字符
  • separator: 拼接符

批量新增数据

方式:
  • 借助foreach标签使用 insert into table values()
  • 借助MySQL数据库连接属性 allowMultiQueries=true

myBatis 的 defaultExecutorType 配置