环境搭建步骤(烹饪过程)
1.添加依赖
准备食材
当你准备做一顿大餐时,你首先需要列出所有必需的食材。在 MyBatis 的世界里,这些食材就是依赖库,你需要在你的
pom.xml
(食谱清单)中添加 MyBatis 及其数据库驱动的依赖,这样你的项目就有了所需的所有原料。
当使用Maven时,可以在pom.xml文件中添加如下依赖:
<dependencies>
<!-- 添加 MyBatis 依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>版本号</version>
</dependency>
<!-- 根据需要添加数据库连接驱动依赖 -->
<dependency>
<groupId>数据库驱动的groupId</groupId>
<artifactId>数据库驱动的artifactId</artifactId>
<version>数据库驱动的版本号</version>
</dependency>
</dependencies>
2.配置MyBatis
阅读食谱
在开始烹饪前,你需要阅读食谱。在 MyBatis 中,食谱就是
mybatis-config.xml
配置文件,它告诉你如何连接数据库(食材仓库),以及如何使用 MyBatis 的特性,比如缓存和事务。
创建 MyBatis 的配置文件 mybatis-config.xml
,通常放在资源目录 src/main/resources
下。这个文件包含了 MyBatis 的核心配置,例如别名、映射器、环境配置等。以下是一个基本的配置示例:
<?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="数据库驱动类全名"/>
<property name="url" value="数据库连接URL"/>
<property name="username" value="数据库用户名"/>
<property name="password" value="数据库密码"/>
</dataSource>
</environment>
</environments>
<!-- 指定 MyBatis 映射文件的位置 -->
<mappers>
<mapper resource="映射文件路径/Mapper.xml"/>
</mappers>
</configuration>
3.创建数据访问对象(DAO)
选择烹饪工具
就像选择适合的锅具和刀具一样,你需要创建 DAO 接口,这些接口定义了你将如何与数据库交互,比如获取、更新数据等。
public interface UserMapper {
User selectUserById(int id);
// 其他数据库操作方法...
}
4.创建MyBatis映射文件
写烹饪步骤
现在,你需要详细写出每道菜的烹饪步骤。在 MyBatis 中,这就是映射文件,它包含了具体的 SQL 语句,告诉 MyBatis 如何根据你的 DAO 接口方法去执行数据库操作。
为每个 DAO 接口创建一个 MyBatis 映射文件,例如 UserMapper.xml
,这个文件将包含与 DAO 接口方法对应的 SQL 语句。例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.dao.UserMapper">
<select id="selectUserById" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<!-- 其他 SQL 映射 -->
</mapper>
5.配置数据源和SqlSessionFactory
预热烤箱
预热烤箱是确保烹饪成功的第一步。在 MyBatis 中,你需要配置数据源和创建
SqlSessionFactory
的实例,这就像是预热你的数据库连接,确保一切准备就绪。
创建 SqlSessionFactory
的实例,并配置数据源。这通常在应用程序启动时完成。例如,使用 MyBatis 的 Resources
类来加载配置文件,并创建 SqlSessionFactory
:
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-
这里定义了一个字符串
resource
,它包含了 MyBatis 配置文件mybatis-config.xml
的路径。这个文件包含了 MyBatis 的所有配置信息,比如数据库连接信息、事务管理器的配置、映射器的路径等。 -
Resources
是 MyBatis 提供的一个工具类,它提供了一个静态方法getResourceAsStream
,该方法接受一个资源路径作为参数,并返回一个InputStream
对象。这个InputStream
可以用来读取配置文件的内容。这里,它被用来读取前面定义的mybatis-config.xml
文件。 SqlSessionFactoryBuilder
是 MyBatis 提供的一个构建器类,用于创建SqlSessionFactory
的实例。build
方法接受一个InputStream
参数,该参数指向了 MyBatis 配置文件的内容。通过调用build
方法,MyBatis 会解析配置文件,并创建一个SqlSessionFactory
对象。
补充:
SqlSessionFactory
是 MyBatis 中非常重要的一个组件,它是线程安全的,并且包含了操作数据库所需的所有配置信息。一旦创建了 SqlSessionFactory
的实例,你就可以使用它来获取 SqlSession
对象,进而执行数据库操作。
在实际应用中,SqlSessionFactory
通常会被创建一次,并在整个应用程序中复用,因为它包含了对配置文件的解析和数据库连接的配置,创建它是相对重量级的操作。而 SqlSession
则是轻量级的,每次数据库操作时创建和关闭。
6.使用MyBatis
开始烹饪
最后,一切准备就绪,你可以开始烹饪了。在 MyBatis 中,这意味着使用
SqlSessionFactory
获取SqlSession
,然后通过它来调用你的 DAO 接口方法,执行数据库操作,就像按照食谱一步步烹饪出美味的菜肴。
在应用程序中使用 SqlSessionFactory
来获取 SqlSession
,并执行数据库操作:
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUserById(1);
// 使用 user 对象...
}
- 这里使用了 Java 7 引入的 try-with-resources 语句,它确保了每个资源(在这个例子中是
SqlSession
)在使用后都能被正确关闭。sqlSessionFactory.openSession()
调用创建了一个新的SqlSession
对象,它是与数据库交互的会话。 session.getMapper()
方法接受一个 Mapper 接口类作为参数,并返回该接口的一个实例。MyBatis 会使用动态代理来创建这个实例,这样调用这个实例的任何方法都会自动映射到相应的 SQL 语句上。在这个例子中,我们获取了UserMapper
接口的一个代理实例。- 使用
userMapper
代理实例调用selectUserById
方法。这个方法定义在UserMapper
接口中,并且与 MyBatis 映射文件中定义的 SQL 语句相关联。这里,它将执行一个查询,根据提供的id
(在这个例子中是1
)来检索用户信息,并将其返回。 - try-with-resources 语句会在代码块执行完毕后自动关闭
SqlSession
。这是非常重要的,因为它会释放数据库连接资源,确保应用程序不会因为资源泄露而出现问题。