博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis的Dao层注入SqlSession
阅读量:7245 次
发布时间:2019-06-29

本文共 1546 字,大约阅读时间需要 5 分钟。

  有点坑爹,以前没用过Mybatis,最近才用,而且一直用Mybatis推荐的接口映射的方式,但是今天有人告诉我接口方式用得少,大多还是采用从配置文件里面读sql的方式,当然接口也是类似的,都是利用mapper.xml。

  于是就想把这东西整合进来,当进行dao的时候发现一个小问题,sqlSession怎么注入进来的问题,以前Hibernate的的习惯用sessionFactory的openSession()方法,但是每个方法都要open一下,麻烦,就想能不能直接把sqlSession通过注解注入进来,有下面这三个类都实现了这个接口:

  

我估计这三个类都差不多,个人估计是功能呢和支持上或者线程同步上面的差别,应该都能生成一个SqlSession实例让我在dao层中运用,打开DefaultSqlSession这个类,里面的几个属性没看懂,于是放弃这个类了;在打开SqlSessionManager这个类,发现构造方法都跟输入流有点关系,我怀疑是根据配置文件之类的方式来实例化,又放弃了;在打开SqlSessionTemplate这个类,发现构造方法只和sqlSessionFactory有关系,感觉有点像了,因为容器里面本来就有sqlSessionFactory,所以可以直接实例化,他的构造方法:

public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {    this(sqlSessionFactory, sqlSessionFactory.getConfiguration().getDefaultExecutorType());  }

于是在spring配置文件中加入下面配置,通过构造方法来实例化。

然后在dao层注入:

@Repositorypublic class ArticleDaoImpl implements ArticleDao {    @Resource    private SqlSession sqlSession;}

随便找了个类测了下通过了,说明这样做是可行的,然后上网查了下看别人是怎么做的,有人说到dao继承SqlSessionDaoSupport这个类,这个类里面包含了有sqlSession,于是看了下这个类的源码,发现这个类里面的sqlSession其实就是SqlSessionTemplate类的实力,跟上面一样的,

public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {    if (!this.externalSqlSession) {      this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);    }  }  public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {    this.sqlSession = sqlSessionTemplate;    this.externalSqlSession = true;  }

也就没去研究这个类到底有什么用,我个人是有个不好的癖好,除非万不得已我不太喜欢去继承某个类,感觉一旦继承了就加入了耦合,有这么个毛病,所以就这样子了,不知道SqlSession的其他两个实现有什么特点,也不清楚网上说继承这个SqlSessionDaoSupport有什么特点。唉~~,以后再看看吧。

转载地址:http://vknbm.baihongyu.com/

你可能感兴趣的文章
vs编译OpenGL项目,出现无法打开 源 文件 "gl\glaux.h的解决办法
查看>>
算法----(2)鸡尾酒排序
查看>>
Android向unity发送消息
查看>>
jsoup -- xml文档解析
查看>>
HTML页面中5种超酷的伪类选择器:hover效果
查看>>
Json web token (JWT)
查看>>
Selenium2Library系列 keywords 之 _SelectElementKeywords 之 _get_labels_for_options(self, options)...
查看>>
【leetcode】1013. Pairs of Songs With Total Durations Divisible by 60
查看>>
【leetcode】1072. Flip Columns For Maximum Number of Equal Rows
查看>>
随手备忘 ubuntu12.04 lts 安装gcc 4.8
查看>>
[matlab] 16.多约束非线性规划 ga工具箱解决 [带不等式约束]
查看>>
[Python] Python 100例
查看>>
自我介绍
查看>>
【洛谷 P3203】 [HNOI2010]弹飞绵羊(LCT)
查看>>
使用JSONObject生成和解析json
查看>>
1到20阶乘的和
查看>>
[系统软件]Ubuntu 18.04中的Shutter禁用了“编辑”选项解决
查看>>
Android应用开发SharedPreferences存储数据的使用方法
查看>>
互联网产品运营只是一网打尽--来源于互联网
查看>>
【转】Web Farm和Web Garden的区别和原理
查看>>