mybatis创建SQL session的步骤

本文介绍了一个用于MyBatis框架的SessionUtil类实现。该类通过静态代码块初始化SqlSessionFactory,使用Resource类加载mybatisConfig.xml配置文件,并通过SqlSessionFactoryBuilder构建SqlSessionFactory。SessionUtil类提供了一个获取SqlSession的方法,便于在应用中进行数据库操作。
部署运行你感兴趣的模型镜像
  1. 得到资源
  2. 创建工厂建造者对象
  3. 用工厂建造者创建工厂
  4. 用工厂得到session

session工具类

package com.fdk.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


import java.io.IOException;
import java.io.Reader;

public class sessionUtil {
    static SqlSessionFactory factory=null;
    protected SqlSession session;
    static {
        try {
            Reader r= Resources.getResourceAsReader("mybatisConfig.xml");
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            factory=builder.build(r);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public SqlSession getsession(){
         session=factory.openSession();
         return  session;
    }

}

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

Llama Factory

Llama Factory

模型微调
LLama-Factory

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

### MyBatis 执行 SQL 语句的工作机制及流程 MyBatis 是一个优秀的持久层框架,它通过动态代理和反射机制将 SQL 映射到 Java 对象中。以下是 MyBatis 执行 SQL 语句的工作机制及详细流程[^1]。 #### 1. 配置解析 在 MyBatis 启动时,会加载 `mybatis-config.xml` 文件以及 Mapper XML 文件。这些文件定义了数据库连接信息、SQL 映射规则等。MyBatis 会将这些配置解析为内存中的对象结构,例如 `Configuration` 和 `MappedStatement`[^2]。 ```java SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); ``` #### 2. 创建 SqlSession 用户通过 `SqlSessionFactory` 创建 `SqlSession` 对象。`SqlSession` 是 MyBatis 的核心接口,提供了执行 SQL、管理事务等功能。每次操作数据库都需要通过 `SqlSession` 实现[^3]。 ```java try (SqlSession session = factory.openSession()) { // 使用 SqlSession 进行数据库操作 } ``` #### 3. 动态代理生成 Mapper 接口实现 当调用 Mapper 接口方法时,MyBatis 会通过动态代理技术生成该接口的实现类。代理对象会在方法调用时拦截请求,并将其转换为对应的 SQL 执行逻辑[^4]。 ```java UserMapper mapper = session.getMapper(UserMapper.class); ``` #### 4. 构建 SQL 语句 根据 Mapper XML 文件或注解定义的 SQL 模板,MyBatis 会解析并生成最终的 SQL 语句。如果使用了动态 SQL(如 `<if>` 标签),则会根据参数值进行条件拼接[^5]。 ```xml <select id="selectUser" parameterType="int" resultType="User"> SELECT * FROM users WHERE id = #{userId} </select> ``` #### 5. 参数处理 MyBatis 会将传入的方法参数(如 `Integer` 或 `Map`)映射为 SQL 中的占位符值。例如,`#{userId}` 会被替换为实际的参数值[^6]。 #### 6. 执行 SQL 通过 JDBC,MyBatis 将生成的 SQL 语句发送到数据库执行。在此过程中,MyBatis 会管理数据库连接、预编译 SQL 语句(PreparedStatement)、设置参数等操作[^7]。 ```java PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1, userId); ResultSet rs = ps.executeQuery(); ``` #### 7. 结果集映射 执行完 SQL 后,MyBatis 会将结果集(`ResultSet`)映射为 Java 对象。这一步依赖于 Mapper XML 文件中的 `resultMap` 定义或注解中的返回类型声明[^8]。 ```xml <resultMap id="userResultMap" type="User"> <id property="id" column="user_id"/> <result property="username" column="user_name"/> </resultMap> ``` #### 8. 返回结果 最后,MyBatis 将映射后的 Java 对象返回给调用方。整个过程对开发者透明,只需关注业务逻辑即可[^9]。 ```java User user = mapper.selectUserById(1); ``` ### 总结 MyBatis 的工作机制涵盖了配置解析、动态代理生成、SQL 构建、参数处理、SQL 执行以及结果集映射等多个环节。每个步骤都经过精心设计,以确保灵活性和高性能[^10]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值