mybatis 创建SqlSessionFactory

mybatis 创建SqlSessionFactory创建SqlSessionFactory有两种方式:一种是通过XML,另一种是通过Java代码。Stringresource="org/mybatis/example/mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSess…

大家好,又见面了,我是你们的朋友全栈君。

创建SqlSessionFactory有两种方式:一种是通过XML,另一种是通过Java代码。

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

XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。给出一个简单的示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

不使用XML文件的方式如下:

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);

SqlSessionFactoryBuilder类有很多个build方法,对应了不同的输入参数:

public SqlSessionFactory build(InputStream inputStream) { 
   
return build(inputStream, null, null);
}

public SqlSessionFactory build(InputStream inputStream, String environment) { 
   
return build(inputStream, environment, null);
}

public SqlSessionFactory build(InputStream inputStream, Properties properties) { 
   
return build(inputStream, null, properties);
}

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.
  }
}
}

public SqlSessionFactory build(Configuration config) { 
   
return new DefaultSqlSessionFactory(config);
}
  • 总的来说分为两种输入参数,一种是为通过XML创建SqlSessionFactory服务,另一种是为完全通过Java代码创建SqlSessionFactory服务。从以上源码我们也能够看出,XML文件中的元素也对应着Java中的对象,例如properties。
  • 前面三种重载方法表明,当配置文件中全部信息都包含时,则使用只有InputStream一个参数的build方法,当XML文件中缺少哪个元素时,可以通过Java代码的方式创建并传入build方法中,比如可以传入properties,这样就能够实现数据库密码不被暴露。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137688.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • fork join原理_典型相关分析

    fork join原理_典型相关分析privateForkJoinPool(intparallelism,ForkJoinWorkerThreadFactoryfactory,UncaughtExceptionHandlerhandler,intmode,StringworkerNamePrefix)fo…

    2022年9月20日
    4
  • 【原创】互联网音视频直播架构方案(技术点)

    【原创】互联网音视频直播架构方案(技术点) 

    2022年7月4日
    25
  • 2020互联网行业术语

    2020互联网行业术语互联网行业一般指的是互联网企业,是指以计算机网络技术为基础,利用网络平台提供服务并因此获得收入的企业。其业务范围通常覆盖全国甚至全球,注册用户通常达到千万级以上,用户活跃度也非常高,经常在同一时间点出现请求并行的情况。代表企业有阿里巴巴、腾讯、百度、东、宇节跳动,美团饿了么等。传统行业通常是指互联网向传统行业渗透,实质是传统行业需要互联网。互联网是技术平台、底层架构,它源于安全需求,却在经济领域大放异彩。传统经济正向网络经济转轨,这-有机联系的经济使各行各业均需连接,因此以互联网为代表的联接型

    2022年6月15日
    53
  • java最简单最全入门基础笔记(不简单,不全你打我)「建议收藏」

    java最简单最全入门基础笔记(不简单,不全你打我)「建议收藏」刚开始学习java的时候,可能是一头雾水,不知道从何学起,这里跟大家分享一下!(仅仅只供初级学者学习,大佬勿喷)一、初始java1.生活中的程序:从起床到教室上课的过程穿衣打扮》起床》洗漱》出宿舍》》吃早餐》到教室按照特定的顺序去完成某一件事的过程我们叫做生活中的程序2.计算机中的程序:一组有序指令的集合,需要和计算机交流就要使用计算机语言,java就是计算机语言的一种3.java…

    2022年6月4日
    31
  • Pytest(1)安装与入门「建议收藏」

    Pytest(1)安装与入门「建议收藏」pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月31日
    7
  • python中lambda函数「建议收藏」

    python中lambda函数「建议收藏」python中lambda被称为行内函数或者匿名函数代码简洁性和便用性

    2022年7月5日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号