当前位置:首页 > 技术分析 > 正文内容

ORM 框架mybatis-plus 初始化过程详细说明

ruisui883个月前 (01-21)技术分析21

为了您更好的阅读互动体验,为了您及时看到更多内容,点个“关注”,我们每天为您更新技术知识、分享SpringBoot,Vue,hadoop,架构等,后续还会推出视频课程,基于ruoyi-cloud实现项目讲解!

MyBatis 的初始化过程主要包括以下几个步骤:

  1. 创建 SqlSessionFactoryBuilder 对象 当有了 XML 配置文件之后(关于数据源等一些基本配置),我们就可以使用MyBatis 提供的 SqlSessionFactoryBuilder 类的 build() 方法基于 XML 配置文件构建出 SqlSessionFactory 实例。
  2. 生成 Configuration 对象 在创建 SqlSessionFactory 实例的过程中,一份全局的配置数据 Configuration 也就产生了,这份配置包括了数据库连接池、事务管理器、已映射语句(Mapped Statement )、映射器(Mapper)接口及其实现等等。
  3. 解析 mapper 文件 MyBatis 初始化期间会将 SQL 语句或存储过程映射文件以及接口注册到 Configuration 对象中,这样 MyBatis 就知道了 SQL 语句,知道了参数类型,以及返回值类型。
  4. 生成 SqlSessionFactory 对象 当 Configuration 对象初始化完成之后,就可以创建 SqlSessionFactory 对象,它是数据库的连接池。
  5. 创建 SqlSession 对象 当进行具体的 SQL 操作时,我们会从 SqlSessionFactory 中获取 SqlSession ,然后再通过 SqlSession 获取 Mapper 来进行具体操作。SqlSession 对象代表和数据库的一次对话。
  6. 解析 Mapper 接口方法 操作数据库需要调用 SqlSession 的 api,为了简化操作,MyBatis 提供了反射和动态代理的技术封装 API,它可以根据接口定义和 XML 文件生成需要的 api。

初始化过程完成后,MyBatis 就可以使用了,你可以通过 sqlSession.getMapper(Class) 来获取 Mapper 对象,然后进行数据库操作。

这里是一个MyBatis初始化实例代码,从创建SqlSessionFactory到获取SqlSession的过程:

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

public class MyBatisInitExample {

  public static void main(String[] args) throws Exception {
    String resource = "org/mybatis/example/mybatis-config.xml"; // 这里要写你自己的mybatis配置文件路径
    InputStream inputStream = Resources.getResourceAsStream(resource);
    
    // Step1: 创建SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    // Step2: 从SqlSessionFactory获取SqlSession
    try (SqlSession session = sqlSessionFactory.openSession()) {
      // Step3: 获取Mapper对象,并执行数据库操作
      UserMapper mapper = session.getMapper(UserMapper.class);
      User user = mapper.selectUser(1);
      System.out.println(user.getName());
    }
  }

}

interface UserMapper {
  User selectUser(int id);
}

class User {
  private int id;
  private String name;

  public int getId() {
    return id;
  }

  public String getName() {
    return name;
  }
  // 其他getter、setter方法省略
}


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/441.html

标签: c# orm框架
分享给朋友:

“ORM 框架mybatis-plus 初始化过程详细说明” 的相关文章

「图解」父子组件通过 props 进行数据交互的方法

1.组件化开发,经常有这样的一个场景,就是父组件通过 Ajax 获取数据,传递给子组件,如何通过 props 进行数据交互来实现,便是本图解的重点。2.代码的结构3.具体代码 ①在父组件 data 中存放数据 ms。 ②将父组件 data 中的数据 ms 绑定到子组件中的属性 ms。 ③子组件在 p...

抖音 Android 性能优化系列:启动优化实践

启动性能是 APP 使用体验的门面,启动过程耗时较长很可能使用户削减使用 APP 的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向...

vue v-html动态生成的html怎么加样式/事件

1、动态生成的html,样式不生效//html 布局 <view v-html="html"> {{html}} </view> //动态生成的元素 <view class="btngo" @tap="handleLink...

vue2中路由的使用步骤,你学会了吗?

今天我们来整理下关于vue2中路由的使用步骤:1. 导入 vue 文件和Vue-router文件(注意:vue-router是依赖vue运行的,所以一定在vue后引入vue-router)2. 定义路由组件模板3. 创建路由实例并定义路由规则4. 将路由实例挂载给Vue实例5. 在结构区域定义控制路...

VUE 技术栈

官网链接:https://cn.vuejs.org/什么是vue:渐进式JavaScript 框架vue-cli链接:https://cli.vuejs.org/vue-cli安装:npm install -g @vue/clivue -V创建一个项目:vue create xxxxxx模版语法:文...

快来看看重构了 365 天的 vue3.5 这次到底更新了啥

新人求关注?,点击右上角 ↗? 关注,博主日更,全年无休,您的关注是我的最大的更新的动力~ 感谢大家了 就在 9 月 1 号,迭代了一年多的 Vue 3.5 终于发布了,这次发布的代号是 "天元突破 红莲螺岩"。这是一个机器人动画片的名字,相信喜欢看动漫的小伙伴应该很熟悉从更新的 C...