关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解

Mybatis配置的优化

1.属性(properties)
对于属性的优化:可以使用引入外部文件的方式来配置对数据库的连接,官网代码:关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解
可以全部写在文件中,然后通过properties resource="文件路径"来引入,也可以在外部文件中写一部分,在properties标签中通过 name-value 键值对写完整。
2.设置(setting)
设置是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。具体全部的在官网有,官网地址:https://mybatis.org/mybatis-3/zh/index.html
其中比较重要的几个设置这里简单介绍一下:
关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解

关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解
3.typeAliases(类型别名)
类型别名可为 Java 类型设置一个缩写名字,然后在后续的使用中,只需要写对应设置好的缩写名字就可以了。有以下三种方法:
①.在mybatis核心配置文件中使用typeAliases标签下的Aliases属性和type属性设置别名。
关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解
②.在mybatis核心配置文件中使用typeAliases标签下的bakage属性指定一个包,然后这个包下所有的类的别名就是他们的类名的第一位为小写。
例如:
关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解
则在user包下的User类的别名就是他们的类名的第一位为小写,即user。
③.使用第二种方法后,若在类上加@Alias("")的注解,则可设置其别名。
4.environments(环境配置)
在环境配置中是可以配置多套环境的,用那套环境就选定那套环境,即在default=""中选择需要的环境的id值即可。关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解

SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解

生命周期和作用域的问题是十分重要的,因为错误的使用会导致非常严重的并发问题。
1.SqlSessionFactoryBulider:这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。 因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。 你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被释放给更重要的事情。
2.SqlSessionFactory:SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。 使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏习惯”。因此 SqlSessionFactory 的最佳作用域是应用作用域。 有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。
3.Sqlsession:每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。

画了一个图,帮助理解:
关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解
总之,每当用完一个Sqlsession后,就应该立即关闭。
本人是一个真在自学java的菜鸟,想一起学习的可以关注我,我会持续的写帖子。有大神看到帖子中的错误的话,希望能在评论区指出,感谢。

关于Mybatis配置的优化和SqlSessionFactoryBuilder,SqlSessionFactory,Sqlsession的生命周期和最优作用域的理解