目录
5.4 初始化SqlSessionFactory并创建SqlSession
MyBatis作为一款优秀的持久层框架,深受Java开发者喜爱。它摒弃了传统JDBC编程中繁琐的数据库连接创建、结果集处理等步骤,同时相比Hibernate等全映射ORM框架,提供了更灵活、可控的SQL操作方式。MyBatis允许开发者自定义SQL,精准控制数据访问过程,对于复杂查询和性能优化有着独特的优势。
MyBatis广泛应用于企业级应用、互联网产品后台服务、大数据处理等领域,尤其适合业务逻辑复杂、SQL需求多变或者需要精细化性能调优的项目。
接下来,我们将进入实战环节,详细介绍如何快速搭建MyBatis的开发环境,包括添加项目依赖、配置基本的mybatis-config.xml文件等内容,为后续章节的学习奠定基础。
在开始使用MyBatis之前,确保你的开发环境中已安装了Java SDK,并配置好了相应的环境变量。接下来是具体步骤:
对于Maven项目,在pom.xml
文件中添加MyBatis的核心依赖:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>最新稳定版本号</version>
</dependency>
<!-- 如果你打算与Spring框架集成 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>最新稳定版本号</version>
</dependency>
<!-- 数据库驱动依赖,例如MySQL数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>最新稳定版本号</version>
</dependency>
</dependencies>
请将上述代码中的“最新稳定版本号”替换为实际的MyBatis和对应数据库驱动的最新版本。
创建一个名为mybatis-config.xml
的配置文件,通常放置于类路径下。该文件用于配置数据源、事务管理器、映射器等基本信息:
<?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/your_database"/>
<property name="username" value="your_username"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件位置 -->
<mappers>
<mapper resource="com/example/mapping/UserMapper.xml"/>
<!-- 更多映射文件引用... -->
</mappers>
</configuration>
根据数据库表结构设计对应的Java实体类,并编写SQL映射文件(如UserMapper.xml),定义CRUD操作的SQL语句以及结果映射规则。
完成配置文件和映射文件的编写后,接下来是使用MyBatis进行数据库操作的关键步骤——初始化SqlSessionFactory并创建SqlSession。
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisDemo {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
// 加载核心配置文件
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 通过SqlSession执行CRUD操作(这里仅以查询为例)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectAllUsers();
// 输出查询结果
for (User user : users) {
System.out.println(user);
}
// 提交事务(如果有修改操作)
sqlSession.commit();
// 关闭SqlSession
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上述代码中,我们首先加载了mybatis-config.xml
配置文件,并使用SqlSessionFactoryBuilder构建了一个SqlSessionFactory。然后通过该工厂打开一个SqlSession,在此过程中可以通过getMapper方法获取到我们之前定义的映射器接口实例,进而执行对应的方法实现数据库操作。
至此,你已经掌握了MyBatis的基本使用流程,接下来我们将深入每个部分进行详细探讨,包括如何编写更复杂的SQL语句、利用动态SQL提升程序灵活性以及在实际项目中如何更好地集成MyBatis等实用技巧。