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)
上一篇 2022年5月5日 下午6:40
下一篇 2022年5月5日 下午6:40


相关推荐

  • MDaemon退信之本域收发

    MDaemon退信之本域收发

    2021年8月13日
    80
  • 体育赛事视频直播方案「建议收藏」

    体育赛事视频直播方案「建议收藏」播已经走入千家万户。各种领域的直播应用、平台如雨后春笋般的涌现。这当然也包括各种体育赛事的直播如篮球赛事直播,足球赛事直播,排球赛事直播等等。对于体育迷来说,NBA、西甲、英超、德甲、意甲、中超、CBA这些比赛是最熟悉不过的了。作为观赏赛事者有很多选择:Zhibo.tv: 直播TV最精彩的体育娱乐直播平台。乐视体育: 让每个人更好的参与体育。企鹅直播: 最全体育赛事视频直播平台。

    2022年7月23日
    23
  • Postman汉化教程

    Postman汉化教程postman 汉化教程链接 postman 汉化

    2026年3月18日
    1
  • PyCharm 2021.5激活码(最新序列号破解)

    PyCharm 2021.5激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    63
  • 775针最好的cpu天梯图_英特尔处理器排名天梯图

    775针最好的cpu天梯图_英特尔处理器排名天梯图E7500是第一代酷睿双核cpu,采用LGA775接口,目前属于低端入门水平,已经淘汰。这款cpu可以满足GTA4的配置要求,可以比较流畅的运行这款游戏。GTA4配置要求.E7500是酷睿2代的中高端双核,在产品线来说是一款中档次产品。酷睿i3是第一代i系列中的入门级双核,性能虽然普遍比上一代产品的定位提升了不少,但和E7500基本.酷睿2系列和奔腾4有啥性能区别?差别大吗?肯定有差距,我使用7…

    2026年2月4日
    6
  • linux中复制文件夹到另一个文件夹_linux 文件夹复制

    linux中复制文件夹到另一个文件夹_linux 文件夹复制1、将一个文件夹下的所有内容复制到另一个文件夹下cp-r/home/packageA/*/home/cp/packageB/或cp-r/home/packageA/./home/cp/packageB/这两种方法效果是一样的。方法示例:2、将一个文件夹复制到另一个文件夹下cp-r/home/packageA/home/packageB运行命令之后packageB文件夹下就有packageA文件夹了。方法示例:3、删除一个文件夹及其下面的所有文件r

    2022年8月23日
    9

发表回复

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

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