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类中

 

posted @ 2018-02-27 19:09  LavenderBotany  阅读(95)  评论(0编辑  收藏  举报