mybatis 知识梳理
上了这么多年班,依然是个学了后面忘了前面的主。今天闲着就想把mybatis 的知识梳理一下。然后抽空再把spring好好梳理一下。好了那我们开始吧,这里我想写的不是一个入门的文章,而是想帮你梳理一下mybtis的知识点。至于SSM 整合我下面几天一个一个梳理吧。然后再来一个整合的。当然比人说的再好,你要用自己的语言梳理一下,那样记忆才更清晰哦!!!!
---------------------------------------------------------------华丽的分割线-------------------------------------------------------------------------------------------
首先我们先说一下mybatis的优点吧:
1.低耦合:它的SQL语句是写在XML文件里的,所以它并不会对数据库的设计产生什么不好的影响。并且写在XMl里大大降低了代码的重合,真正降低了耦合。这也是个人认为最好的一个。
2.MyBatis是最简单的持久化框架,小巧并且简单易学。 与JDBC相比,减少了大量代码。
有优点当然也有缺点:
1. SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。
2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
然后我们来说说mybatis的使用步骤吧:
- 创建PO(model)类,根据需求创建;
- 创建全局配置文件SqlMapConfig.xml;
- 编写映射文件与mapper文件;
- 加载映射文件,在SqlMapConfig.xml中进行加载;
- 编写测试程序,即编写Java代码,连接并操作数据库。
为什么要列出来,如果你想在后面搭建框架的时候不混乱。他的使用步骤你一定要记得。个人意见,有感而发。
-
调用思路:
- 读取配置文件;
- 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
- 通过SqlSessionFactory创建SqlSession。
- 调用SqlSession的操作数据库方法。
- 关闭SqlSession。
那我们现在一个一个来说说说:
1.创建PO(model)类,根据需求创建;
这里创建相信大家都知道,但是在你创建的时候那你首先要清楚你这个bean类在后面在使用时候是需要序列化的(serializable)。所以你可以提前序列化。(这一点在工作的时候,经常会忘记,然后查了一圈回来才发现是这个问题)最好把tostring方法也重写一下,这样方便数据打印
2.创建全局配置文件SqlMapConfig.xml;
这个是mybatis必要的配置文件他主要是两类东西:A:为与数据库链接的时候需要的路径、用户名、密码、线程池设置等。
B:另一类的就是mybatis自身的一些设置。如 别名、缓存、添加映射文件
3.编写映射文件与mapper文件
这里注意两个文件要同名,并且在.xml 文件中确认关联。当然你非要不一样它不可能把你怎么样,但是这是规定。 之后别忘了mapper.xml 要与上面的配置文件管理
4.加载映射文件,在SqlMapConfig.xml中进行加载;
这个就是说mapper.xml 要与配置文件管理关联,让在驱动配置文件的时候,能把映射文件加进去。
5.编写测试程序,即编写Java代码,连接并操作数据库
关于使用这里就说完了这里直接附上调用代码截图吧。
下面一条华丽的分割线
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
那还有那些我们必须要知道的知识点呢?
1.懒加载
首先不是任何一个SQL语句都能使用懒加载的。他要在语句嵌套或者部分重复的时候才可以使用。因为懒加载的目的目的一来是可以节约资源,二来也降低了代码的耦合性。
但是为了避免数据的虚读,所以估计在用户设计师在设计懒加载的时候也是小心翼翼的。为了避免这些,所以懒加载使用的局限性就更加大了。比如我在UserMapper的类中调用了一个查询方法a,然后另一个方法也想复用这个a查询出来的值。那么必须满足一下条件,在第一次调用a的时候中间没有对数据进行过增删改的操作。否则他会把这个数据清除。(它也不行背锅啊,哈哈)
2.缓存
mybatis的缓存分为一级缓存和二级缓存。一级缓存是自带的,耳机缓存需要手动开启,在配置和映射文件中都要添加配置。
这里直接放一张图吧,更直接一些。
还注意一对一、一对多、多对多的时候mapper 的书写方式。也要注意,这个要是挨个说的话估计要好久。所以如果忘记话去找找其他博客。应该有很多