mybatis核心接口和类

     2022-03-26     588

关键词:

三大对象:

1、SqlSessionFactoryBuilder:负责构建SqlSessionFactory,并且提供了多个build()方法的重载

2、SqlSessionFactory:创建SqlSession实例的工厂

3、SqlSession:用于执行持久化操作的对象

 

三大对象获取的步骤:

(1)每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。

(2)首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件的实例构建该对象。

(3)然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象来获得。

(4)有了SqlSessionFactory对象之后,通过SqlSessionFactory对象的openSession()方法就可以获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有执行SQL操作的方法。

 

三大对象的声明周期和作用域:

《1》SqlSessionFactoryBuilder的最大特点是:用过即丢。一旦创建了SqlSessionFactoryBuilder对象之后,这个类就不再需要存在了,因此SqlSessionFactoryBuilder的最佳范围是存在方法体内,也就是局部变量而已。

《2》SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在,因此SqlSessionFactory的最佳作用域是Application(单例模式)。

《3》SqlSession对应着一次数据库回话。在每次访问数据库时都需要创建它,每个线程都有自己的SqlSession实例,SqlSession实例不能被共享,也不是线程安全的。因此最佳的作用域范围是request作用域或者方法体作用域内。

 

 

package com.ssm.utils;

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;
/**
 * MyBatis的核心接口和类
 * @author Administrator
 *
 */
public class MyBatisUtil {

    private static SqlSessionFactory factory;
    
    /*
     * 在静态代码块下,factory只会被创建一次
     */
    static{
        try {
            String resource="mybatis-config.xml";
            InputStream is=Resources.getResourceAsStream(resource);
            factory=new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /**
     * 创建SqlSession对象
     * @return
     */
    public static SqlSession createSession(){
        return factory.openSession(false);//true为自动提交事务,true为默认值
    }
    
    /**
     * 关闭SqlSession对象
     * @param session
     */
    public static void closeSession(SqlSession session){
        if (session!=null) {
            session.close();
        }
    }
}

 

package com.ssm.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.ssm.entity.Address;
import com.ssm.entity.User;
import com.ssm.mapper.UserMapper;
import com.ssm.utils.MyBatisUtil;

public class TestUser {

    public static void main(String[] args) {
        SqlSession session=null;
        List<User> userList;
        /**
         * 查询所有user的集合
         */
        try {
            session=MyBatisUtil.createSession();
            userList = session.getMapper(UserMapper.class).getUserList();
            for (User user : userList) {
                System.out.println("userid:"+user.getId()+"	userName:"+user.getUserName());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            MyBatisUtil.closeSession(session);
        }
    }
}

 

mybatis的架构原理与6大核心流程

深入详解Mybatis的架构原理与6大核心流程注:本文转自:mikechen:MyBatis是Java生态中非常著名的一款ORM框架,目前在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。 如果你想要进入一线大厂,能够熟练使用MyBatis... 查看详情

mybatis接口映射(代码片段)

前面Mybatis是直接通过Dao层与数据交互,更好的方法是Mybatis通过接口映射方式与数据交互1.在项目中添加maven支持(即pom.xml下添加支持)<!--在pom.xml下配置--><!--mybatis核心包--><dependencies><!--mybatis核心包--><dependency>... 查看详情

mybatis详解

一、介绍MyBatis是一个开源的Java持久化框架,它可以将SQL语句和Java代码进行分离,使得开发人员可以专注于Java代码编写,而不必过多关注SQL语句的编写和维护。MyBatis通过XML或注解的方式来实现SQL语句的配置和映射,同时还支持... 查看详情

mybatis01快速入门(代码片段)

MyBatis01快速入门文章目录MyBatis01快速入门一、学习目标二、为什么需要框架技术三、框架技术介绍四、主流框架介绍五、持久化与ORM六、MyBatis简介七、搭建MyBatis开发环境八、与JDBC直观对比九、MyBatis框架优缺点十、MyBatis基本要... 查看详情

---mybatis3学习笔记补充

1.首先看看这个例子中所用到的mybatis的接口和类  Resources类:org.apache.ibatis.io.Resources;顾名思义就是资源,用来读取资源文件,读取MyBatis的主配置文件  SqlSession接口:用于持久化操作,一个Sqlsession对应着一次数据库会话,一次会话... 查看详情

mybatis框架可视化

Mybatis整体架构视图:接口层SqlSession(定义了Mybatis暴露给应用程序调用的API)核心处理层配置解析(加载核心配置、映射配置、mapper接口注解信息,解析后形成的对象保存至Configuration对象)参数映射SQL解析(动态sql拼接)SQL执行(sql执行... 查看详情

mybatis框架入门

初识mybatis对原生jdbc程序(单独使用jdbc开发)问题总结mybatis框架原理mybatis入门程序用户的增删查改mybatis开发dao两种方法原始dao开发方法(程序需要编写dao接口和dao实现类)mybatis的mapper接口(相当于dao接口)代理开发方法mybatis... 查看详情

mybatis框架

1:MyBatis核心对象(生命周期与作用域)SqlSessionFactoryBuilderSqlSessionFactorySqlSession通过SqlSession实例直接执行已映射的SQL语句基于Mapper接口方式操作数据2:MyBatis核心配置文件(mybatis-config.xml)properties元素settings元素typeAliases元素envir... 查看详情

mybatis复习

用mapper.xml的映射文件实现DAO的接口,需要两个配置文件,一个是核心配置xxxconf.xml和mapper.xml,得把mapper.xml的地址写进核心配置中 官方推荐使用mapper动态代理开发,即mapper里面的对象实现了接口功能  selectOne和selectList ... 查看详情

mybatis核心源码深度剖析工作机制和实现原理

目录1MyBatis源码分析导入1.1为什么要看MyBatis框架的源码1.2如何深入学习MyBatis源码1.3源码分析的5大原则2MyBatis架构体系深入剖析2.1MyBatis的整体架构体系2.2MyBatis的工作机制和实现原理2.2.1接口层2.2.1.1获取SqlSession流程分析2.2.1.2SqlSess... 查看详情

mybatis四大核心对象之parameterhandler

参考技术AParameterHandler是MyBatis四大核心对象之一,ParameterHandler相比于其他的组件就简单很多了,ParameterHandler译为参数处理器,负责为PreparedStatement的sql语句参数动态赋值,这个接口很简单只有两个方法:MyBatis为ParameterHandler只提... 查看详情

mybatis执行流程分析

Mybatis执行流程分析导入依赖删除父项目的Src建立子项目父项目的依赖子项目都可以用配置mybatis的核心配置文件创建Bean类创建接口,实现接口用xml或者注解实现接口 查看详情

mybatis核心源码深度剖析核心执行器executor和缓存原理

目录1JDBC回顾2MyBatis的核心执行组件介绍2.1SqlSession2.2Executor2.3StatementHandler3Executor执行器分析3.1JDBC中的执行器3.2Mybatis执行器3.2.1Executor接口3.2.2BaseExecutor(基础执行器)3.2.3SimpleExecutor(简单执行器) 查看详情

mybatis——dao层实现映射文件深入核心配置文件深入(代码片段)

目录Mybatis的Dao层实现传统开发方式 代理开发方式 MyBatis映射文件深入动态sql语句动态SQL之动态SQL之SQL片段抽取总结Mybatis核心配置文件深入typeHandlers标签 plugins标签总结Mybatis的Dao层实现传统开发方式1、编写UserDao接口publicinterfac... 查看详情

mybatis3核心知识点总结(代码片段)

MyBatis简介MyBatis是一款优秀的持久层框架,一个半ORM(对象关系映射)框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或... 查看详情

mybatis的工作原理和核心流程(代码片段)

Mybatis四大核心对象:1.SqlSession对象,包含执行Sql语句的所有方法,类似JDBCConnection.2.Executor接口,将SqlSession传递的参数动态地生成需要执行的sql语句,同时负责查询缓存的维护。类似于JDBC的Statement/PrepareStatemen... 查看详情

mybatis运行原理

mybatis运行原理运行过程中涉及到的类或者接口Resources(c):用于加载mybatis核心配置文件XMLConfigBuilder(c):用于解析xml文件(核心配置文件)Configuration(c):用于存放xml文件解析后的结果DefaultSqlSessionFactory(c):是SqlSessionFactory(I)的实现类... 查看详情

mybatis:注解

一、前言利用mybatis注解开发,就不需要mapper.xml文件了,只需要在核心配置文件中导入即可,提高了开发效率二、CRUD(注解)查询在接口中添加注解//查询全部用户@Select("selectid,name,pwdpasswordfromuser")publicList<User>getAllUse... 查看详情