delphi 数据库连接池-Spring事务管理 | 数据库连接池流程原理分析

2022-12-29 11:22:03 浏览数 (3)

import com.wei.Mapper.UserMapper;

代码语言:javascript复制
    import com.wei.pojo.User;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import java.util.List;
    public class MyTest {
        @Test
        public void test(){
            //解析beans.xml文件,生成管理相应的Bean对象,创建 Spring 的 IOC 容器
            ApplicationContext context = new ClassPathXmlApplicationContext("applicicationContext.xml");
            //getBean:参数即为Spring配置文件中的bean的id
            //从IOC容器中获取 bean 的实例
            UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
            List userList = userMapper.selectUser();
            for (User user : userList) {
                System.out.println(user);
            }
        }
    }

  总结

  配置事务原因:

  是的核心对象,用于初始化,读取配置文件,创建对象delphi 数据库连接池,是全局对象,为保证其在应用中全局唯一delphi 数据库连接池,要使用static进行初始化

  是操作数据库的核心对象,使用JDBC方式与数据库交互,同时提供了数据表的CRUD(增删改查)对应的api方法

  导入jar包

  格式:

代码语言:javascript复制
    org.mybatis
    mybatis
    x.x.x
代码语言:javascript复制
     org.mybatis
     mybatis
     3.5.2

  XML 中构建

   String resource = "org/mybatis/example/mybatis-config.xml";

代码语言:javascript复制
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

  获得 的实例

  既然有了 ,顾名思义,我们可以从中获得 的实例。 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 实例来直接执行已映射的 SQL 语句

   SqlSession sqlSession = sessionFactory.openSession(true);

  代码实现

   package com.wei.utils;

代码语言:javascript复制
    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.InputStream;
    //sqlSessionFactory  构造  sqlSession
    public class MybatisUtils {
        //提升作用域:定义SqlSessionFactory全局变量
        private static SqlSessionFactory sqlSessionFactory;
    //静态代码块:执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员
        static {    
            try {
                //使用Mybatis第一步:获取sqlSessionFactory对象
                
                //定义核心配置文件
                String resource = "mybatis-config.xml";
                //通过IO流加载resource的mybatis-config.xml核心配置文件文件
                InputStream inputStream = Resources.getResourceAsStream(resource);
                //通过build加载inputStream
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
        //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
        //你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession(true);        //此处设置参数为true时,表示开启自动提交事物功能
        }
    }

  ▌作用域(Scope)和生命周期

  所有代码中都遵循这种使用模式,可以保证所有数据库资源都能被正确地关闭

  lder(构造器) (工厂) (会话)

本文共 474 个字数,平均阅读时长 ≈ 2分钟

1 人点赞