Mybaits配置相关
1.核心配置文件,官网截图圈住的是要掌握的。
2.环境配置-----environments
MyBatis 可以配置成适应多种环境。 不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
以下两套环境,根据environment的id进行区分。environments的默认值是test1,立即选中的是环境test1。
在学习mybaits+Spring的过程中,默认事务管理器是JDBC,默认数据源是POOLED
3.属性-----properties
使用properties来使用配置文件中的配置,这些配置可以动态替换。【db.properties】
编写一个配置文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybaits?useUnicode=true&characterEncoding=UTF-8 username=root password=123456
使用properties标签将这个配置文件引入。这个标签的【优先级最高】即:这个标签不能乱写,得写在配置文件中的最上方
引入后在对应位置使用${键属性}即可
当然在properties标签中也可以自定义键值对~【属性名相同时候,优先使用配置文件中的属性】
<properties resource="db.properties"> <property name="hello" value="world"/> <property name="password" value="errpassword"/> </properties>
4.类型别名------typeAliases
类型别名是什么,为什么使用别名。
类型别名可为 Java 类型设置一个缩写名字。在接口配置文件中,参数类型,返回值类型要包含java代码的全部包名,太冗余了,可以在【核心配置】文件中取别名。
类型别名也可以扫描一个具体的包名。包里面不能重复类。所以别名就可以是这个类的小写名称。
包里存在多个类时,直接用包名的方式进行类型别名,配置文件中直接写类名的小写就行;
存在常见的Java 类型内建的类型别名。【官网文档】
区别:
第一种可以自定义别名;
第二种不能自定义别名,就是包里面的类名(没有注解的情况下)
第二种代码中使用注解的情况下,这个别名是注解中的【yonghu】注解值,原先的【user】就找不到了
@Alisa("yonghu")
public class User(){
...
}
5.setting------设置
及其重要的设置。目前先记住3个 开启缓存,懒加载,日志
6.mapper-----映射器
用于配置文件用于关联接口配置文件的。注册绑定。
1.resource
<mappers> <mapper resource="com/chen/dao/UserMapper.xml"/> </mappers>
2.Class
不能随便使用。
1.接口UserMapper的和它配置文件UserMapper.xml必须同名
2.接口和配置文件必须在同一个包下
满足以上条件才可以使用Class这种方法
<mappers> <mapper Class="com.chen.dao.UserMapper"/> </mappers>
3.package 将整个包都注册
这个也不能随便使用。
1.接口UserMapper的和它配置文件UserMapper.xml必须同名
2.接口和配置文件必须在同一个包下
满足以上条件才可以使用Class这种方法
<!-- 将包内的映射器接口实现全部注册为映射器 --> <mappers> <package name="com.chen.dao"/> </mappers>
7.作用域和生命周期
作用域和生命周期非常重要,错误的话会导致很严重的【并发问题】
begin->mybaits-config.xml->SqlSessionFactoryBuilder->SqlSessionFactory->SqlSession->Mapper.xml【实现增删改查】->end
SqlSessionFactory一旦创建SqlSessionFactoryBuilder就没用了。
SqlSessionFactory
一旦创建,在运行期间一直存在,没用任何理由丢弃它或者创建另外一个实例。可以看做一个连接资源池~
全局
最简单的就是单例模式
SqlSession
每个线程都应有SqlSession,可以理解为线程到连接池的一个请求
不是安全的,用完之后最好关闭,否则资源被占用。
Mapper:
每一个Mapper都可以看作是一个业务。