myBatis参数处理
Opened this issue · 2 comments
styleyan commented
多参数传递3种方式
-
Javabean方式(多参数处理-封装POJO类)
如果多个参数是我们业务逻辑的数据模型,我们就可以直接传入pojo,把参数封装成一个实体类,通过 new xxxx(param1,...)后在传给myBatis -
map(多参数处理)
如果参数个数比较少,而且没有对应的Javabean,可以封装成Map -
@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")参数处理总结:
- 使用map传递参数,业务可读性差
- @param, 受到个数(n) 的影响,建议n<5时,为最佳的传参方式
- 以上参数的处理各有利弊,参数>5,建议用Javabean方法
styleyan commented
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: 拼接符
styleyan commented
批量新增数据
方式:
- 借助foreach标签使用 insert into table values()
- 借助MySQL数据库连接属性 allowMultiQueries=true