MyBatis的核心配置

1.1MyBatis的核心对象

在使用MyBatis框架时,主要涉及两个核心对象:SqlSessionFactory和SqlSession,它们在MyBatis框架中起着至关重要的作用。本节将对这两个对象进行详细讲解。

1.1.1SqlSessionFactory

SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像,

其主要作用是创建SqlSession。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来构建,

而SqlSessionFactoryBuilder则可以通过XML配置文件或一个预先定义好的Configuration实例构建出SqlSessionFactory的实例。

本书所讲解的就是通过XML配置文件构建出的SqlSessionFactory实例,其实现代码如下

//1.读取配置文件
    String resource="mybatis-config.xml";
    InputStream inputStream=
        Resources.getResourceAsStream(resource);
    //2.根据配置文件构建sqlSessionFactory
    SqlSessionFactory sqlSessionFactory=
            new SqlSessionFactoryBuilder().build(inputStream);

SqlSessionFactory对象是线程安全的,它一旦被创建,在整个应用执行期间都会存在。

如果我们多次地创建同一个数据库的SqlSessionFactory,那么此数据库的资源将很容易被耗尽。

为了解决此问题,通常每一个数据库都会只对应一个SqlSessionFactory,所以在构建SqlSessionFactory实例时,建议使用单列模式。

1.1.2SqlSession

SqlSession是MyBatis框架中另一个重要的对象,它是应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作。

SqlSession对象包含了数据库中所有执行SQL操作的方法,由于其底层封装了JDBC连接,所以可以直接使用其实例来执行已映射的SQL语句。

每一个线程都应该有一个自己的SqlSession实例,并且该实例是不能被共享的。

同时,SqlSession实例也是线程不安全的,因此其使用范围最好在一次请求或一个方法中,绝不能将其放在一个类的静态字段、

实例字段或任何类型的管理范围(如Servlet的HttpSession)中使用。使用完SqlSession对象之后,要及时地关闭它,通常可以将其放在finally块中关闭,代码如下所示。

SqlSession对象中包含了很多方法,其常用方法如下所示。·

<T> T selectOne(String statement);

查询方法。参数statement是在配置文件中定义的<select>元素的id。使用该方法后,会返回执行SQL语句查询结果的一条泛型对象。

· <T> T selectOne(String statement, Object parameter);

查询方法。参数statement是在配置文件中定义的<select>元素的id, parameter是查询所需的参数。使用该方法后,会返回执行SQL语句查询结果的一条泛型对象。

· <E> List<E> selectList(String statement);

查询方法。参数statement是在配置文件中定义的<select>元素的id。使用该方法后,会返回执行SQL语句查询结果的泛型对象的集合。·

<E> List<E> selectList(String statement, Object parameter);

查询方法。参数statement是在配置文件中定义的<select>元素的id, parameter是查询所需的参数。使用该方法后,会返回执行SQL语句查询结果的泛型对象的集合。

·

<E> List<E> selectList(String statement, Object parameter, RowBoundsrowBounds);

查询方法。参数statement是在配置文件中定义的<select>元素的id, parameter是查询所需的参数,rowBounds是用于分页的参数对象。使用该方法后,会返回执行SQL语句查询结果的泛型对象的集合。

· void select(String statement, Object parameter, ResultHandler handler);

查询方法。参数statement是在配置文件中定义的<select>元素的id, parameter是查询所需的参数,ResultHandler对象用于处理查询返回的复杂结果集,通常用于多表查询。

· int insert(String statement);

插入方法。参数statement是在配置文件中定义的<insert>元素的id。使用该方法后,会返回执行SQL语句所影响的行数。

· int insert(String statement, Object parameter);

插入方法。参数statement是在配置文件中定义的<insert>元素的id, parameter是插入所需的参数。使用该方法后,会返回执行SQL语句所影响的行数。

· int update(String statement);

更新方法。参数statement是在配置文件中定义的<update>元素的id。使用该方法后,会返回执行SQL语句所影响的行数。

· int update(String statement, Object parameter);

更新方法。参数statement是在配置文件中定义的<update>元素的id, parameter是更新所需的参数。使用该方法后,会返回执行SQL语句所影响的行数。

· int delete(String statement);

删除方法。参数statement是在配置文件中定义的<delete>元素的id。使用该方法后,会返回执行SQL语句所影响的行数。

· int delete(String statement, Object parameter);

删除方法。参数statement是在配置文件中定义的<delete>元素的id, parameter是删除所需的参数。使用该方法后,会返回执行SQL语句所影响的行数。

· void commit();

提交事务的方法。

· void rollback();

回滚事务的方法。

 void close();

关闭SqlSession对象。

· <T> T getMapper(Class<T> type);

该方法会返回Mapper接口的代理对象,该对象关联了SqlSession对象,开发人员可以使用该对象直接调用方法操作数据库。参数type是Mapper的接口类型。MyBatis官方推荐通过Mapper对象访问MyBatis。

· Connection getConnection();

获取JDBC数据库连接对象的方法。

多学一招:使用工具类创建SqlSession在上一章的入门案例中,每个方法执行时都需要读取配置文件,并根据配置文件的信息构建SqlSessionFactory对象,

然后创建SqlSession对象,这导致了大量的重复代码。为了简化开发,我们可以将上述重复代码封装到一个工具类中,然后通过工具类来创建SqlSession,如文件所示。

import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    // 初始化SqlSessionFactory对象
    static {
        try {
            // 使用MyBatis提供的Resources类加载MyBatis的配置文件
            Reader reader =
                   Resources.getResourceAsReader("mybatis-config.xml");
            // 构建SqlSessionFactory工厂
             sqlSessionFactory =
                   new SqlSessionFactoryBuilder().build(reader);
           } catch (Exception e) {
                e.printStackTrace();
             }
        }
        // 获取SqlSession对象的静态方法
        public static SqlSession getSession() {
            return sqlSessionFactory.openSession();
        }
}

1.2配置文件

MyBatis的核心配置文件中,包含了很多影响MyBatis行为的重要信息。这些信息通常在一个项目中只会在一个配置文件中编写,并且编写后也不会轻易改动。

虽然在实际项目中需要开发人员编写或者修改的配置文件不多,但是熟悉配置文件中各个元素的功能还是十分重要的。接下来的几个小节中,将对MyBatis配置文件中的元素进行详细的讲解。

1.2.1主要元素

在MyBatis框架的核心配置文件中,<configuration>元素是配置文件的根元素,其他元素都要在<configuration>元素内配置。

在上一章的入门案例中,我们在配置文件内只使用了<environments>和<mapper>等几个元素,但在实际开发时,通常还会对其他一些元素进行配置。

1.2.2 <properties>元素

<properties>是一个配置属性的元素,该元素通常用于将内部的配置外在化,即通过外部的配置来动态地替换内部定义的属性。

例如,数据库的连接等属性,就可以通过典型的Java属性文件中的配置来替换,具体方式如下。

(1)在项目的src目录下,添加一个全名为db.properties的配置文件,编辑后的代码如下所示。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

(2)在MyBatis配置文件mybatis-config.xml中配置<properties... />属性,具体如下。

<properties resource="db.properties">

(3)修改配置文件中数据库连接的信息,具体如下。

<!-- 数据库连接池 -->
       <dataSource type="POOLED">
          <!-- 数据库驱动 -->
           <property name="driver" value="${jdbc.driver}"></property>
          <!-- 连接数据库 -->
          <property name="url" value="${jdbc.url}"></property>
          <!-- 连接数据库的用户名 -->
          <property name="username" value="${jdbc.username}"></property>
          <!-- 连接数据库的密码 -->
         <property name="password" value="${jdbc.password}"></property>
       </dataSource>

原文地址:https://www.cnblogs.com/byczyz/p/12173564.html

时间: 2024-10-12 03:12:44

MyBatis的核心配置的相关文章

Mybatis学习——Mybatis核心配置

MyBatis的核心配置 在使用MyBatis框架时,设计两个核心的d对象:SqlSessionFactory和SqlSession. SqlsessionFactory SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,其主要作用用来创建SqlSession对象,SqlSessionFactory实例对象是可以通过SqlSessionFactoryBulider对象来构建,而SqlSessionFactoryBulider对象可以通过XML文件或者Configurat

mybatis的基本配置:实体类、配置文件、映射文件、工具类 、mapper接口

搭建项目 一:lib(关于框架的jar包和数据库驱动的jar包) 1,第一步:先把mybatis的核心类库放进lib里 2,第二步:导入第三方类库(在lib里).mybatis的核心类库在运行时还依赖一些第三方类库 3,第三步:导入连接数据库驱动jar包 二:创建mybatis的配置文件 1,第一步:先创建实体包,对照着表结构把实体类写出来.封装好就是写get,set方法------不像hibernate,可以自动的将表名字段名与实体类相对应,不用自己手写实体类与映射文件 2,第二步:创建xml

JAVAWEB开发之Hibernate详解(一)——Hibernate的框架概述、开发流程、CURD操作和核心配置与API以及Hibernate日志的使用

Hibernate框架概述 什么是Hibernate? 框架:软件的半成品,完成部分代码的功能. Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思想来操作数据库.Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序中使用,也可以在Servlet/JSP的web应用程序中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成

Mybatis最入门---配置详解(下)

[一步是咫尺,一步即天涯] 上文我们详细解释了HelloWorld工程中的配置项,本文,我们再来介绍一些更加基础,灵活的配置项.本文,我们先不演示具体的工程,后续的文章中会按照实际应用来配置相关的参数.敬请期待! -----------------------------------------------------------------------------------------------------------------------------------------------

mybatis学习笔记一mybatis结合spring配置

这两天,开始学习mybatis,有点感觉,分享一下,在这里要感谢一号门博客  链接:http://www.yihaomen.com/article/java/426.htm 首先项目示例图给大家看一下: applicationContext.xml类: <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/bea

SpringBoot2 + Druid + Mybatis 多数据源配置

在大数据高并发的应用场景下,为了更快的响应用户请求,读写分离是比较常见的应对方案.读写分离会使用多数据源的使用.下面记录如何搭建SpringBoot2 + Druid + Mybatis  多数据源配置以及在使用过程遇到的问题. 一.先从pom.xml入手(使用springboot 2的版本) <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

Spring Boot (七): Mybatis极简配置

Spring Boot (七): Mybatis极简配置 1. 前言 ORM 框架的目的是简化编程中的数据库操作,经过这么多年的发展,基本上活到现在的就剩下两家了,一个是宣称可以不用写 SQL 的 Hibernate ,一个是对 SQL 非常友好的 Mybaties ,,两者各有特点,在企业级系统开发中可以根据需求灵活使用.发现一个有趣的现象:传统企业大都喜欢使用 Hibernate ,互联网行业通常使用 Mybatis . Hibernate 特点就是所有的 SQL 都用 Java 代码来生成

Mybatis入门(四)配置优化(一)

这一章主要实验Mybatis的引入外部配置文件,属性(properties)这个属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递. 这是官方的. 来实践一下: 根据官方要求先创建一个db.properties外部文件 里面写配置属性: driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&UseUnicod

MyBatis之旅-配置MyBatis的环境

我使用Gradle来构建MyBatis的依赖,构建代码如下: def mybatisVersion     = "3.3.0" def mybatisSpringVersion = "1.2.3" compile ( "org.mybatis:mybatis-spring:$mybatisSpringVersion", "org.mybatis:mybatis:$mybatisVersion" ) 然后我在项目下再新建一个So