MyBatis框架:第六章:mybatis的核心配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MyBatis框架:第六章:mybatis的核心配置

mybatis的核心配置之properties

创建jdbc.properties

一般在实际的项目中。数据库的连接信息。会存放在一个jdbc.properties的属性配置文件中

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

mybatis-config.xml中修改引入properties资源

<!-- properties 配置一些属性。使用的时候,用${name} 进行输出
    resource指定属性的位置 
 -->
<properties resource="jdbc.properties">
  <!-- 也可以在properties配置中定义一些属性。当然并不推荐 -->
  <property name="username" value="root"/>
  <property name="password" value="root"/>
</properties>

特别说明:引入的jdbc.properties属性文件中的信息,会覆盖掉原来使用property标签定义的属性值。

修改原来数据库连接的信息。

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC" />
    <dataSource type="POOLED">
      <!-- 配置数据库连接信息 -->
      <property name="driver" value="${driverClass}" />
      <property name="url" value="${url}" />
      <property name="username" value="${username}" />
      <property name="password" value="${password}" />
    </dataSource>
  </environment>
</environments>

mybatis的核心配置之settings

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。常用的设置参数

cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关。 true | false 默认值true

lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 true | false 默认值false

lazyLoadTriggerMethods 指定哪个对象的方法触发一次延迟加载。

mybatis的核心配置之typeAliases

类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。

<!-- typeAliases 可以配置别名 -->
  <typeAliases>   
    <!-- 
      typeAlias 配置一个别名
        type 是具体的全类名
        alias 是别名
    <typeAlias type="com.atguigu.pojo.User" alias="user"/> -->
    <!-- 通过配置包名,让程序自动扫描所有包下的类,自动加别名
          自动加的别名是。类名首字母小写
          User  user
     -->
    <package name="com.atguigu.pojo"/>
    <package name="com.atguigu.entity"/>
  </typeAliases>

mybatis的核心配置之typeHandlers:这个我不经常用

JDK8,新特性,时间的处理。类型处理器。
  <typeHandlers>
    <typeHandler handler="org.apache.ibatis.type.InstantTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.OffsetDateTimeTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.OffsetTimeTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.ZonedDateTimeTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.YearTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.MonthTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.YearMonthTypeHandler" />
    <typeHandler handler="org.apache.ibatis.type.JapaneseDateTypeHandler" />
  </typeHandlers>

mybatis的核心配置之environmentstransactionManager

<!-- 
  environments标签用来定义多个数据库环境
   -->
  <environments default="development">
    <!-- environment用来定义一个数据库环境 -->
    <environment id="development">
     <!-- 
      transactionManager配置事务管理器
        事务管理器类型有两种:
        JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。
      MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。
      -->
      <transactionManager type="JDBC"/>
      <!-- 修改数据库的四个连接属性  -->
      <dataSource type="POOLED">
        <property name="driver" value="${driverClass}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>

environments

一般情况下。在工作的时候。会定义多个环境信息。<environment>

那么定义多个环境有什么用?

比如说:我可以定义一个环境是dev开发环境。可以在自己写代码的时候测试用。连接的是自己的数据库。

又定义一个环境run是实际布暑的数据库连接环境。

那么当我们要发布项目的时候。只需要把default值改为run就好

transactionManager

JDBC (JdbcTransactionFactory) – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。

<transactionManager type=“JDBC” />

MANAGED (ManagedTransactionFactory)– 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。例如:

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

自定义:实现TransactionFactory接口,然后在type=全类名

注意:如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。一般情况下,我们都会整合Spring + MyBatis 一起使用。使用的都是Spring的事务管理。

dataSource 标签说明

<dataSource type=“POOLED”>

这个标签是配置是否启动数据库连接池配置。

type 属性的值有三种: UNPOOLED 、 POOLED 、 JNDI

UNPOOLED – 这个数据源的实现只是每次被请求时打开和关闭连接。虽然一点慢,它对在及时可用连接方面没有性能要求的简单应用程序是一个很好的选择。 不同的数据库在这方面表现也是不一样的,所以对某些数据库来说使用连接池并不重要,这个配置也是理想的。

POOLED – 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

JNDI – (Java Naming and Directory Interface) 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。

自定义 - 实现DataSourceFactory接口,定义自己的数据源实现。

注意:一般情况下,我们都全整合Spring + MyBatis 一起使用。所以数据源整合之后都是使用Spring的数据源。

mybatis的核心配置之databaseIdProvider

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。

<databaseIdProvider type="DB_VENDOR">
  <property name="SQL Server" value="sqlserver" />
  <property name="MySQL" value="mysql" />
  <property name="DB2" value="db2" />
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

mybatis提供了一个类VendorDatabaseIdProvider,中的getDatabaseId() 方法用于获取数据库的标识。

property 标签name属性是获取数据库ID标识。

property 标签value属性是我们给mybatis定义的一个简短的标识。

databaseId测试

这样子,我们就可以在mapper的配置文件中,在定义sql语句的时候,添加标识。

<select id="selectUserById" parameterType="int"
  resultType="User" databaseId="mysql">
  select id , last_name from t_user where id = #{value}
</select>

这样子,当mybaits读取mapper中的sql语句的时候,只会读取和数据库标识对应得上的sql语句。

如果把 databaseId属性改为oracle。而当前的数据库是mysql的话。

<select id="selectUserById" parameterType="int"
    resultType="User" databaseId="oracle">

那么 执行selectUserById 语句的时候就会报错。

mybatis的核心配置之Mapper

把mapper配置文件注入到mybatis-config.xml核心配置文件中有三种常用方式。

1、在classpath路径下引入

2、使用mapper接口的形式导入配置

3、使用包扫描的方式引入配置文件

  <!-- 从classpath路径下导入指定的配置文件 -->
  <mappers>
    <mapper resource="org/mybatis/builder/AuthorMapper.xml" />
    <mapper resource="org/mybatis/builder/BlogMapper.xml" />
    <mapper resource="org/mybatis/builder/PostMapper.xml" />
  </mappers>
  <!-- 使用mapper接口类导入配置文件 -->
  <mappers>
    <mapper class="org.mybatis.builder.AuthorMapper" />
    <mapper class="org.mybatis.builder.BlogMapper" />
    <mapper class="org.mybatis.builder.PostMapper" />
  </mappers>
  <!-- 扫描包下所有的配置文件
1、接口名和Mapper配置文件名必须相同
2、接口文件和Mapper配置文件必须在同一个包下
  -->
  <mappers>
    <package name="org.mybatis.builder" />
  </mappers>


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
|
Java 数据库连接 Maven
后端框架学习-----mybatis(使用mybatis框架遇到的问题)
这篇文章总结了在使用MyBatis框架时可能遇到的几个常见问题及其解决方法,包括配置文件注册、接口绑定、方法名匹配、返回类型匹配、Maven资源导出、时区设置和字符编码问题。
|
22天前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
29天前
|
Java 数据库连接 mybatis
mybatis框架图
文章介绍了MyBatis框架的起源、发展和其作为持久层框架的功能,提供了MyBatis的框架图以帮助理解其结构和组件。
mybatis框架图
|
29天前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
11天前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
20 1
|
29天前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
29天前
|
Java 数据库连接 测试技术
后端框架的学习----mybatis框架(8、lombok)
这篇文章介绍了如何在MyBatis框架中使用lombok库来简化Java实体类的编写,包括在IDEA中安装Lombok插件、在项目中导入lombok依赖以及在实体类上使用Lombok提供的注解。
|
29天前
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。
|
1月前
|
缓存 Java 数据库连接
mybatis1.常见配置
本文介绍了MyBatis框架中的常见配置及其加载顺序。配置可通过`properties`元素、资源文件或方法参数传递,其中方法参数传递的属性具有最高优先级。文章列举了几个重要的配置项,如`cacheEnabled`用于全局开启或关闭缓存功能;`lazyLoadingEnabled`控制对象的延迟加载行为;`useGeneratedKeys`允许JDBC支持自动生成主键;`defaultExecutorType`设定默认执行器类型等。此外,还介绍了多环境配置方法,通过`environments`元素可定义不同环境下的数据库连接信息,并可根据需求动态选择加载特定环境
|
2月前
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
58 4