mybatis源码分析第一次-----2018-12-23

关于代码就不贴了,大家可以自行debug自己去看,这个总体的总结可以先看看

Mybatis框架源码分析:
//读取配置文件
InputStream inputstream=Resources.getResourcesAsStream("mybatis-config.xml");
//创建sqlSessionFactory对象
SqlSessionFactory sqlsessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession对象
session=sqlsessionFactory.openSession();
//操作
session.insert("insertStu",student)
//提交
session.commit();
session.close();


SqlSessionFactory sqlsessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
首先把MyBatis的配置文件封装成IO流的方式,再者就是创建sqlsessionFactory的过程,这里面采用了工厂模式来生成sqlsessionFactory的实例,用SqlSessionFactoryBuilder
的build方法,build方法里面有一个自己的重载的过程,这是因为在这里可以改变Mybatis配置文件中的properties,environment等信息,真正在build方法里面
实现的还是用XMLConfigBuilder的parse()方法来实现对mybatis配置文件的一个解析,这个parse方法返回的configuration对象就有了配置文件的一些信息,
这个configuration对象会作为build方法的一个参数,调用build方法其实就是新建了一个DefaultSqlSessionFactory对象,他是SqlSessionFactory的实现类,也
就是说最后返回的就是DefaultSqlSessionFactory对象


session=sqlsessionFactory.openSession();
由sqlsessionFactory这个工厂来创造sqlsession对象,返回的还是defaultSqlSession对象,这个对象里面有一些属性,比如dirty,autocommit,executor等一些属性

session.insert("insertStu",student)    (insertStu是映射文件的id)
这个方法里面可以帮我们找到三个问题的答案:
1.mybatis是如何把insertStu与映射文件的id对应起来的?
2.mybatis如何把数据绑定到sql语句中?
3.mybatis如何输送sql语句?
insert方法其实调用的是update方法,里面会传入上面的两个参数,当sqlsession对象在执行的时候,他要根据configuration对象的mapper映射的id找到当前执行的sql语句,
同时通过对应关系把值赋值到对应的 sql语句中 ,下来就是执行器Executor进行sql语句的执行工作,这里面应该就是封装的一些jdbc的操作,来完成对数据库的交互工作,在
这个操作之前,会有MapperStatement对象将赋值内容和sql占位符进行绑定的一个操作。


session.commit();
这个里面的主要是通过sqlsession对象里面的dirty属性来决定数据库的事务提交的方式,具体就是当dirty属性为true时,就是当sql语句执行完毕后,事务可以进行提交,
当dirty属性为false时,当sql语句执行完毕后,事务可以进行回滚

 

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值