Java框架篇---Mybatis 构建SqlSessionFactory

本文详细探讨了如何在Java中构建Mybatis的SqlSessionFactory。首先,介绍了Mybatis框架的基本概念,然后讲解了SqlSessionFactory的作用及其在应用程序中的重要性。接着,通过实例展示了配置SqlSessionFactory的步骤,包括XML配置文件的设置和Java配置方式。最后,讨论了最佳实践,如使用SqlSessionTemplate以提高代码的可维护性和性能。
部署运行你感兴趣的模型镜像
Java框架篇---Mybatis 构建SqlSessionFactory

 

一 、从 XML 中构建 SqlSessionFactory
       基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
       从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。
  
[Java]  纯文本查看  复制代码
?
1
2
3
String resource = "mybatis.xml" ;
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        XML 配置文件(mybatis.xml)中包含了对 MyBatis 系统的核心设置,这里先给出一个简单的示例:
  
[XML]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<? 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 = "com.mysql.jdbc.Driver" />
                 < property name = "url" value = "jdbc:mysql://localhost:3306/mybatis" />
                 < property name = "username" value = "root" />
                 < property name = "password" value = "root" />
             </ dataSource >
         </ environment >
     </ environments >
     < mappers >
         < mapper resource = "com/oumyye/mapping/userMapping.xml" />
      </ mappers >
</ configuration >

       当然,还有很多可以在XML 文件中进行配置,上面的示例指出的则是最关键的部分。要注意 XML 头部的声明,用来验证 XML 文档正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的 XML 文件包含了 SQL 代码和映射定义信息)。
二、不使用 XML 构建 SqlSessionFactory      
       如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。
[Java]  纯文本查看  复制代码
?
1
2
3
4
5
6
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);
      注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免了 XML 文件的依赖。不过,由于 Java 注解的一些限制加之某些 MyBatis 映射的复杂性,XML 映射对于大多数高级映射(比如:嵌套 Join 映射)来说仍然是必须的。有鉴于此,如果存在一个对等的 XML 配置文件的话,MyBatis 会自动查找并加载它(这种情况下, BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来)。
三、从 SqlSessionFactory 中获取 SqlSession
       既然有了 SqlSessionFactory ,顾名思义,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:
[Java]  纯文本查看  复制代码
?
1
2
3
4
5
6
SqlSession session = sqlSessionFactory.openSession();
try {
   Blog blog = (Blog) session.selectOne( "org.mybatis.example.BlogMapper.selectBlog" , 101 );
} finally {
   session.close();
}

       诚然这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉,不过现在有了一种更直白的方式。使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。例如:
[Java]  纯文本查看  复制代码
?
1
2
3
4
5
6
7
SqlSession session = sqlSessionFactory.openSession();
try {
   BlogMapper mapper = session.getMapper(BlogMapper. class );
   Blog blog = mapper.selectBlog( 101 );
} finally {
   session.close();
}

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值