MyBatis(三)
1.session.commit()为什么会引起事物的提交?
先ctrl+鼠标左键点入commit方法中,然后ctrl+H找到DefaultSqlSession这个类,在这个类中找到如下的方法
然后进入这个方法
这里有一个逻辑关系表达式,运算的顺序是 && || !的顺序依次运算得到的结果是true,那么该方法的返回值是true
所以执行器的提交,会引起事务的提交
2.session.close()会引起事务的回滚?(同上述方法相似,一步一步往上一层找,就可以找到答案,看到它底层的代码)
最终找到
可以得到session.close()会引起事务的回滚
3.resultMap结果映射
在这需要注意的是resultType和resultMap不能同时存在(记住)
它主要解决了什么问题呢?
解决数据库表中Table中的字段和Java实体类中的字段名称不一致问题,需要我们手工映射
以查询语句为例
在小配置中首先添加一个节点<resultMap>
在sql语句的节点中resultType属性要改为resultMap他的值为上面resultMap节点的id的值
然后在大配置中也需要添加一个节点<settings>
这个的属性值有三个:NONE,PARTIAL(默认),FULL
4.添加后返回自增列的值
实现的结果为
5.多条件查询
多条件查询有两种方式Map 和 根据索引
首先第一种Map
第二种 根据索引号Index
6.智能标签
智能标签有 if where foreach list array
(1)智能标签if where结合
首先声明方法在接口中
然后再小配置中添加节点
最后编写测试类 测试方法
(2)智能标签foreach array
首先声明方法在接口中
然后再小配置中添加节点
最后编写测试类 测试方法
(3)list<Integer>
(4)list<自定义>
7.util包:工具类
首先要先创建一个util包,MyBatisUtil类
MyBatisUtil类中