续上篇MyBatis框架
10.typeAliases标签配置别名
10.1
用于给java类型定义别名, 方便在配置文件中使用.
10.2使用方式
a) 给User类型定义别名为u
b)
c) 可以通过
10.3 MyBatis 的内建别名
11.配置parameterType属性进行参数的传递
11.1参数的查询
如果执行的是条件查询, 需要在调用方法时传参数进来, 此时, 可以在select标签中通过parameterType属性指定参数的类型. 而在SQL语句中, 可以通过#{}的方式获取参数.
11.2通过parameterType属性实现参数传递是有哪些注意事项?
1.当只有一个参数时, #{}中可以任意填写.
2.当有多个参数传递时:
a)参数为基本参数类型: #{}用于获取参数 index,索引, (1)从0开始 (2)param+数字, param1, param2
b).参数为对象时:可以通过#{属性名}来获取
c)如果参数是map, 可以通过#{key}来获取
12.MyBatis事务管理_工具类提取
12.1.Mybiats中的事务(Transaction)?
a) 事务是数据库操作的最小单元, 有 ACID的特性. 应该保证一个事务的的SQL语句要么同时成功, 要么都不成功.
b) MyBatis中配置了事务管理器, type属性设置为 JDBC.表示MyBatis采用和原生JDBC相同的事务管理机制.
c) 在MyBatis执行的开始时, 将自动提交功能关闭了. 所以,在执行DML操作时, 需要手动提交事务.
d)所以在完成增删改的操作时必须手动提交事物。
12.2简单提取工具类
12.2.1为什么要提取工具类?
简化重复的代码使用。
封装mybatis中重复使用代码:
12.3使用手动管理事物及封装好的工具类完成增删改语句
14.MyBatis接口绑定方案
14.1接口绑定方案分析:
MyBatis中, 提供了一套接口绑定方案. 程序员可以提供一个接口, 然后提供对应接口的一个 mapper.xml文件.MyBatis会自动将接口和 xml文件进行绑定. 实际上就是MyBatis会根据接口和对应的 xml文件创建接口的实现类.换言之, 就是可以得到接口类型的对象, 方便方法的调用.
14.2实现方式
14.2.1定义接口
12.2.2编写对应接口的映射文件
注意:
a) xml文件名要和接口名一致
b) namespace属性必须为接口的全限定路径
c) id属性必须和接口对应的方法名一致
d).paramterType的类型与方法的形参类型保持一致(如果没有配置别名,则需要全限定类名)
e)resultType的类型与查询结果所映射的实体类型保持一致
14.3在核心配置文件中扫描接口
a) 扫描单个接口, 可以使用mapper标签的class属性
b) 当扫描多个接口时, 为简化配置, 可以使用package标签, 表示扫描对应包下的所有接口.
14.4实现应用
在使用时, 可以通过 SqlSession对象的 getMapper方法,得到接口的代理对象, 从而可以调用定义好的方法.
14.5通过接口绑定解决多参数的传递(绑定过接口,xml的参数可以不给!)
14.5.1 方式一
a) 接口中定义方法
User selByUP(String username, String password);
b) 映射文件中提供对应的标签. 此时, SQL语句中获取方式有两种, 通过#{index}或#{param+数字}的方式.
14.5.2方式二
a) 接口中定义方法, 参数中使用@Param注解设定参数名用于在SQL语句中使用.
b) 映射文件中提供对应的标签. 此时, SQL语句中获取方式有两种, 通过#{参数名称}或#{param+数字}的方式.
15.动态 SQL
15.1什么是动态sql
根据条件的不同, SQL语句也会随之动态的改变.
15.2动态 SQL的实现
MyBatis中, 提供了一组标签用于实现动态SQL.
1)
用于进行条件判断, test属性用于指定判断条件. 为了拼接条件, 在SQL语句后强行添加1=1的恒成立条件.
2)
用于管理where子句. 有如下功能:
a) 如果没有条件, 不会生成where关键字
b) 如果有条件, 会自动添加where关键字
c) 如果第一个条件中有and, 去除之
3)
这是一套标签, 功能类似于switch...case...
注意:此标签结果只会执行一个条件
4)
用于维护update语句中的set子句. 功能如下:
a) 满足条件时, 会自动添加set关键字
b) 会去除set子句中多余的逗号
c) 不满足条件时, 不会生成set关键字
5)
用于在前后添加或删除一些内容
a) prefix, 在前面添加内容
b) prefixOverrides, 从前面去除内容
c) suffix, 向后面添加内容
d) suffixOverrides, 从后面去除内容
6)
用于对数据进行再加工, 用于模糊查询
7)
用于在SQL语句中遍历集合参数, 在in查询中使用
a) collection: 待遍历的集合
b) open: 设置开始符号
c) item: 迭代变量
d) separator: 项目分隔符
e) close: 设置结束符号
8)
16. MyBatis的缓存机制
16.1什么是缓存机制?
a) 缓存用于提高查询的效率.
b) MyBatis的缓存是使用SQL标签的ID作为缓存的唯一标识的. 执行相同的标签可以使用缓存. 不同的标签不能使用缓存.
16.2MyBaties缓存分类?
MyBatis中有两种缓存机制.
16.2.1一级缓存
a) 默认开启. 线程级别的缓存, SqlSession的缓存
b) 在一个 SqlSession 生命周期中有效. SqlSession关闭,
缓存清空.
16.2.2 二级缓存
a) 进程级别的缓存, SqlSessionFactory的缓存
b) 在一个SqlSessionFactory生命周期中有效. 可以在多个SqlSession生命中期中共享.
c) 默认关闭, 需要使用的时候, 要为某个命名空间开启二级缓存(在mapper.xml中配置