【修真院java小课堂】Mybatis整合Spring

大家好,我是IT修真院深圳分院第三期学员王东东,一枚正直纯洁善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务一,扩展思考中的知识点——Mybatis整合Spring 。
一、背景介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

二、知识剖析
1.回顾MYBATIS的知识
mybatis,有两个配置文件 :

①全局配置文件SqlMapConfig.xml(配置数据源,全局变量,加载映射文件等东西)。

②映射文件xxxMapper.xml,用来对输入参数输出参数,数据库语句做配置的。

mybatis配置好之后的使用步骤

①获取sqlMapConfig.xml的位置然后进行加载

②通过sqlMapConfig.xml中的内容创建出sqlsessionFactory对象

③然后通过sqlsessionFactory对象创建出sqlsession对象

④有了sqlsession对象就可以进行相应的操作了。

2.集成思路:

有了上面的一些知识回顾,那么就有思路让spring继承mabatis了

①让spring来管理数据源信息,sqlMapConfig.xml中就不需要加载数据源了。交给spring管理

②让spring通过单例方式管理SqlSessionFactory,只需要一个SqlSessionFactory帮我们生成sqlsession即可。也就是需要sqlsession对象就让sqlsessionfactory生成。所以是单例方式。

③让spring创建sqlsession bean。也就是通过SqlSessionFactory创建SqlSession
④如果是使用mapper代理开发的方式,那么持久层的mapper都需要由spring进行管理,spring和mybatis整合生成mapper代理对象。
也就是:
xxxMapper mapper = sqlSession.getMapper(xxxMapper.class);
变成xxxMapper mapper = context.getBean(“xxxMapper”);

spring集成Mybatis,注意一点,有什么对象都由spring来创建即可。

整合方式:
有两种
①基于XML文件配置(官方推荐)

②基于注解(优点:开发效率高 成本低,缺点:耦合性大 并且不利于后期维护)

三、常见问题
VALUE和REF什么时候用?

四、解决方案
value适合给变量注入属性,ref注入的是映射属性。

五、编码实战

六、扩展思考
为什么不需要mybatis配置文件?
mybatis连接数据库的时候,我们只是用它得到SqlSessionFactory,而整合的时候,我们 在dataSource已经包含了连接数据库的条件,spring可以产生SqlSessionFactory。

注:本人初学java者,如有不对敬请指出,谢谢!

七、参考文献
http://www.mybatis.cn/category/mybatis-source/2/

https://blog.csdn.net/u013412772/article/details/73648537

https://blog.csdn.net/qq_36074113/article/details/73997548

http://www.cnblogs.com/hellokitty1/p/5216025.html

https://www.yiibai.com/spring/spring_jdbc_example.html

https://www.cnblogs.com/whgk/p/7133340.html

https://www.jb51.net/article/138433.htm

https://www.cnblogs.com/zyw-205520/p/4771253.htm

https://blog.csdn.net/sinat_33982461/article/details/75202499

八.更多讨论
1.单独使用mybatis和整合spring后的连接池配置有什么区别?
单独使用mybatis时配置的是自己连接池。
整合spring后的连接池是外部的。
2.mybatis整合spring有几种配置方式?
方式一、采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean。
方式二、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。
方式三、采用抽象类org.mybatis.spring.support.SqlSessionDaoSupport提供SqlSession。
3.别名的作用
在parameterType和resultType设置时,为了方便编码,可以给类配置别名。否则就要写全限定名,比较麻烦,容易出错。


今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。
快来与我一起学习吧。我的学习邀请码:28547998。或者直接点击链接http://www.jnshu.com/login/1/28547998


本文来自 wuxie__ 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/wuxie__/article/details/82694051?utm_source=copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值