添加以及删除操作的实现
添加
注意:在#{}中的列名需要以驼峰命名;
<insert id="add">
insert into 表名(...列名);
values(...#{});
</insert>
执行方法,测试:
MyBatis事务
openSession():默认开启事务,进行增删改操作后需要使用sqlSession.commit();手动提交事务
openSession():可以设置为自动提交事务(关闭事务);
添加---主键返回
返回主键添加的程序
<insert useGeneratedKeys="true" keyProperty="id"></insert>
修改
修改---全部字段(缺乏灵活性)
<update id="update">
相关操作与之前命令一致
</update>
修改---动态字段(很灵活)
与查询的动态判断相同的思路
将set改变为
删除
删除一个数据
<delete id="deleteById">
delete from 表名
where id=#{id}
</delete>
删除多个数据(批量删除)
mybatis会将数组集合,封装为一个map集合
默认array=数组
使用@Param注解改变map集合的默认
<delete id="deleteById">
delete from 表名
where id in(
<foreach collection="" item="id" separator=",">
#{id}
</foreach>
);
</delete>
参数传递 ??????
MyBatis参数封装:(+ 即为加Param注解)
单个参数:
1、POJO类型:直接使用,属性名和参数占位符名称一致即可使用
2、+Map集合:直接使用,属性名和参数占位符名称一致即可使用
3、+Collection:封装为Map集合
map.put("arg0",collection集合);
map.put("collection",collection集合);
map.put("arg0",collection集合);
4、+List
map.put("arg0",list集合);
map.put("collection",list集合);
map.put("list",list集合);
5、+Array
map.put("arg0",数组);
map.put("array",数组);
6、其他类型
多个参数:封装为Map集合,使用Param注解,替换Map集合中默认的arg键名----可读性更高一些
Map.put("参数名称",参数值); //*n
MyBatis底层对于这些参数进行不同的封装方式
MyBatis提供了一个ParamNameResolver类
注解开发---一般应用在简单的语句中
注解(举例):
查询:@Select
添加:@Insert
删除:@Delete
修改:@Update
复杂语句一般使用配置文件