博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring datasource和mybatis的datasource来源在哪里
阅读量:6853 次
发布时间:2019-06-26

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

配置一个数据源 

    在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。 

 

配置一个数据源 

    在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。 

配置一个数据源 

    在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。 

(1) 读取xml文件构造方式

 

String resource = "org/mybatis/example/mybatis-config.xml";  InputStream inputStream = Resources.getResourceAsStream(resource);  SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream) ;

 

(2) 编程构造方式

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();TransactionFactory transactionFactory = new JdbcTransactionFactory();Environment environment = new Environment("development", transactionFactory, dataSource);Configuration configuration = new Configuration(environment);configuration.addMapper(BlogMapper.class);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration) ;

 

 

 

下面先来分析XML文件构造方式的build方法的源码:

 

public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {    try {      XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);      return build(parser.parse());    } catch (Exception e) {      throw ExceptionFactory.wrapException("Error building SqlSession.", e);    } finally {      ErrorContext.instance().reset();      try {        inputStream.close();      } catch (IOException e) {        // Intentionally ignore. Prefer previous error.      }    }  }

 

通过上面这几行代码,就能看出基于XML文件的这种构造方式,通过从XML中读取信息的工作之后,也是构造出Configuration对象之后再继续进行SqlSessionFactory的构建工作的,只是多了些XML的解析工作,所以我们只需单刀直入,直按分析编程构造方式的代码就可以了,或者是直接分析 build(parser.parse())这句代码(参数产生过程先跳过)

编程构造方式的build方法源码如下(基于xml的构造方式的build(parser.parse())最终也是调了这个代码): 

  

  public SqlSessionFactory build(Configuration config) {                return new DefaultSqlSessionFactory(config);    }

 

其实这么看来SqlSessionFactory在mybatis的默认实现类为org.apache.ibatis.session.defaults.DefaultSqlSessionFactory , 其构造过程主要是注入了Configuration的实例对象,Configuration的实例对象即可通过解析xml配置文件产生,也可能通过代码直接构造。以上代码使用了一个设计模式:建设者模式(Builder),SqlSessionFactoryBuilder扮演具体的建造者,Configuration类则负责建造的细节工作,SqlSession则是建造出来的产品。

以下是类图和建造者模式的基本形态图,读者自行对照阅读。

    

构造者模式是一种对象的创建模式。它可以将一个复杂对象的内部构成特征与对象的构建过程完全分开。

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

你可能感兴趣的文章
C#中 @ 的3种用途
查看>>
模板方法模式(Template Pattern)
查看>>
Instr() 函数
查看>>
hdu-acm steps Max sum
查看>>
Radar Installation
查看>>
组队项目四则运算成果
查看>>
使用UIPickerView显示数据
查看>>
java代码继承基础
查看>>
java继承实例基础
查看>>
数据库增删改查梳理
查看>>
linux下检测每个进程占用swap大小
查看>>
[转] 编译输出文件的区别
查看>>
Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了...
查看>>
springboot集成redis操作
查看>>
x64 QWORD Xor shellcode encoder
查看>>
大数据之mapreduce小实战
查看>>
Elasticsearch(二)
查看>>
一步一步学linq to sql(九)其他补充
查看>>
windows service and process 的关系
查看>>
转 Oracle 12C 之 CDB/PDB用户的创建与对象管理
查看>>