Mybatis进阶使用
一、批量增删
1.批量增加
//<foreach>标签用来遍历集合
//collection表示Mapper接口中的参数
//item代表集合中的每个元素
//separator代表分隔符
//open表示开头
//close表示结尾
eg:
//接口中的方法
<!--void insertUsers(@Param("userList") List<User> userList);-->
//mapper.xml中的SQL
<!--批量插入用户-->
<insert id="insertUsers">
INSERT INTO user (name, password) VALUES
<foreach collection="userList" item="user" separator=",">
(#{user.name},#{user.password})
</foreach>
</insert>
2.批量删除
eg:
// mapper接口中的方法
<!--void deleteChildByIds(@Param("idList") List<Long> idList);-->
//mapper.xml中的SQL
<delete id="deleteChildByIds">
DELETE FROM child WHERE id IN
<foreach collection="idList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
二、多对一增查
1.多对一查询
-
嵌套结果:简单理解就是联表查询出所有结果,然后分别给不同的表
-
嵌套查询:简单理解就是先执行一个表的查询,然后在额外发送另一个表的查询
2.多对一新增
-
部门和员工表
-
新增部门,配置主键返回
-
新增员工
-
代码案例:
//useGeneratedKeys="true" 增加成功自动返回主键值 //keyColumn="id" 代表table中的主键id //keyProperty="id" 代表赋值给当前新增对象的属性id <!--新增部门--> <insert id="insertSingleDept" useGeneratedKeys="true" keyColumn="id" keyProperty="id"> INSERT INTO dept (name) VALUES (#{name}) </insert>