Mybatis的执行流程

MyBatis是一个开源的持久层框架,它简化了数据库操作的编写和管理。下面是MyBatis的执行流程概述:

1. 配置:首先,你需要配置MyBatis的相关配置文件,如 `mybatis-config.xml` 和映射文件(Mapper XML)。配置文件包含了数据库连接信息、插件配置、类型别名等。

mybatis-config.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.properties"/>
    <!--将下划线映射为驼峰-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延时加载 有分布的话 执行一步    一个属性可以-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--按需加载 false生效        全局配置 -->
        <setting name="aggressiveLazyLoading" value="false"/>
        <!--fetchType="eager "      延迟加载    association -->
    </settings>
    <!--设置别名,使用
            type设置别名表示具体别名
            alias:设置某个类型别名 默认类名-->
    <typeAliases>
        <!--通过包设置默认别名,不区分大小写-->
        <package name="top.b3222.pojo"/>
    </typeAliases>
    <!--别名  按照顺序 properties?,settings?,typeAliases?,typeHandlers?,
    objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,
    environments?,databaseIdProvider?,mappers?)".-->
    <plugins>
        <!--设计分页插件-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
    <!--    2. 配置  mybatis-config.xml :在  mybatis-config.xml  文件中,您可以使用  <properties>
元素来引入  jdbc.properties  文件。例如:-->
    <!--配置数据库的环境-->
    <!--设置默认使用环境 default:development -->
    <environments default="development">
        <!--设置环境唯一标识:开发环境-->
        <environment id="development">
            <!--事务管理器       type:方式JDBC(原生) MANAGED(被管理 aoc iop spring)-->
            <transactionManager type="JDBC"/>
            <!--数据源  type pooled使用数据库连接池 unpooled不属于 jndi:表示使用上下文中的数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入mybatis的映射文件mapper.xml-->
    <!--也可以包引入-->
    <!--    <mappers>-->
    <!--        <mapper resource="top/b3222/mapper/UserDao.xml"/>-->
    <!--    </mappers>-->
    <mappers>
        <package name="top/b3222/mapper"/>
    </mappers>
</configuration>
复制代码

2. 创建SqlSessionFactory:通过读取配置文件,MyBatis会创建一个 `SqlSessionFactory` 对象。 `SqlSessionFactory` 是MyBatis的核心接口,用于创建 `SqlSession` 对象。

复制代码
 1 public class SqlSessionUtil {
 2     private static SqlSessionFactory sqlSessionFactory;
 3 
 4     static {
 5         try {
 6             // 加载 MyBatis 配置文件
 7             String resource = "mybatis-config.xml";
 8             InputStream inputStream = Resources.getResourceAsStream(resource);
 9             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
10         } catch (IOException e) {
11             e.printStackTrace();
12         }
13     }
14     public static SqlSession getSqlSession(boolean flag) {
15         return sqlSessionFactory.openSession(flag);
16     }
17 }
复制代码

3. 创建SqlSession:通过 `SqlSessionFactory` 的 `openSession()` 方法创建一个 `SqlSession` 对象。 `SqlSession` 是执行SQL操作的入口,它提供了各种操作数据库的方法。

    public void addUSer(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user=new User(null,"郭","123",21,"男","123@qq.com");
        int i = mapper.addUser(user);
        System.out.println(i);
        sqlSession.close();
    }

4. 执行SQL语句:在 `SqlSession` 对象上调用相应的方法执行SQL语句,如 `selectOne()` 、 `selectList()` 、 `insert()` 、 `update()` 、 `delete()` 等。你可以使用XML映射文件或注解方式来定义和配置SQL语句。

UserMapper->UserMapper.xml

5. 数据库操作:MyBatis会将SQL语句发送到数据库执行,并将结果封装为Java对象返回给应用程序。

6. 事务管理:MyBatis支持事务管理,你可以在 `SqlSession` 对象上调用 `commit()` 、 `rollback()` 和 `close()` 等方法来管理事务。

总的来说,MyBatis的执行流程包括配置MyBatis、创建 `SqlSessionFactory` 、创建 `SqlSession` 、执行SQL语句、数据库操作和事务管理。

请注意,以上是MyBatis的基本执行流程,具体的细节和步骤可能会因为你的应用程序配置和使用方式而有所不同。

posted @   一只小小菜鸡  阅读(577)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示