【MyBatis 5】SqlSessionFactory和SqlSession,架构师带你玩转Redis高性能缓存设计实战

int update(String statement);

int update(String statement, Object parameter);

int delete(String statement);

int delete(String statement, Object parameter);

void commit();

void commit(boolean force);

void rollback();

void rollback(boolean force);

List flushStatements();

void close();

void clearCache();

Configuration getConfiguration();

T getMapper(Class type);

Connection getConnection();

}

三、SqlSessionFactory和SqlSession实现过程


mybatis框架主要是围绕着SqlSessionFactory进行的,创建过程大概如下:

(1)、定义一个Configuration对象,其中包含数据源、事务、mapper文件资源以及影响数据库行为属性设置settings

(2)、通过配置对象,则可以创建一个SqlSessionFactoryBuilder对象

(3)、通过 SqlSessionFactoryBuilder 获得SqlSessionFactory 的实例。

(4)、SqlSessionFactory 的实例可以获得操作数据的SqlSession实例,通过这个实例对数据库进行操作

并且如果想按照上述方式得到SqlSessionFactory,最好使用下面的mybatis-config.xml类似的配置。在这里mybatis-config.xml配置文件是没有和Spring配置文件整合过得,如果项目中mybaits的配置文件和Spring配置文件整合过了,则下面的代码运行估计会出错,因为一般spring和mybatis整合过之后,mybatis的配置文件基本没有存在的必要了,之前在mybatis中配置的数据源和事务这两个方面,一般的做法都会spring的配置文件,则下面的代码加载mybatis-config.xml的时候,得不到必要的信息,创建的过程中会有问题。所以在这里先给一份mybatis-config.xml单独的配置文件。

<?xml version="1.0" encoding="UTF-8"?>

下面的这行代码功能是通过配置文件mybatis-config.xml,创建SqlSessionFactory对象,然后产生SqlSession,执行SQL语句.而mybatis的初始化发生在:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

如果是spring和mybaits整合之后的配置文件,一般以这种方式实现,SqlSessionFactory的创建:

关于SqlSessionFactory和SqlSession两个对象给一个具体的使用过程:

package com.cn.testIUserService;

import java.io.IOException;

import java.io.InputStream;

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 com.cn.entity.User;

public class MyBatisTest {

public static void main(String[] args) {

try {

//读取mybatis-config.xml文件

InputStream resourceAsStream = Resources.getResourceAsStream(“mybatis-config.xml”);

//初始化mybatis,创建SqlSessionFactory类的实例

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

//创建session实例

SqlSession session = sqlSessionFactory.openSession();

/*

  • 接下来在这里做很多事情,到目前为止,目的已经达到得到了SqlSession对象.通过调用SqlSession里面的方法,

  • 可以测试MyBatis和Dao层接口方法之间的正确性,当然也可以做别的很多事情,在这里就不列举了

*/

//插入数据

User user = new User();

user.setC_password(“123”);

user.setC_username(“123”);

user.setC_salt(“123”);

//第一个参数为方法的完全限定名:位置信息+映射文件当中的id

session.insert(“com.cn.dao.UserMapping.insertUserInformation”, user);

//提交事务

session.commit();

//关闭session

session.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

针对上面的代码给出详细的说明关于SqlSessionFactory和SqlSession创建过程涉及的内容:

结合上述SqlSessionFactory和SqlSession使用过程和结构图,涉及到的方法为下面步骤,结合源码中的方法为下面的步骤:

第一步首先SqlSessionFactoryBuilder去读取mybatis的配置文件,然后build一个DefaultSqlSessionFactory,即得到SqlSessionFactory

//源码中涉及的包和具体方法为:

//涉及的包为:package org.apache.ibatis.session;

//第一个类为:SqlSessionFactoryBuilder,设计到此类的方法为下面部分:

public SqlSessionFactory build(InputStream inputStream) {

return build(inputStream, null, null);

}

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

学习视频:

大厂面试真题:

转存中…(img-VZwutDN5-1711091028784)]
[外链图片转存中…(img-5aLCohD1-1711091028785)]
[外链图片转存中…(img-0tICe2Da-1711091028786)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-1LBgUTyO-1711091028787)]

最后

学习视频:

[外链图片转存中…(img-od1Wz1H4-1711091028787)]

大厂面试真题:

[外链图片转存中…(img-bQxk3upJ-1711091028788)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值