彻底理解MyBatis的环境如何搭建(超详细)

环境搭建步骤(烹饪过程)

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。这是非常重要的,因为它会释放数据库连接资源,确保应用程序不会因为资源泄露而出现问题。
  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值