MyBatis(三):核心配置文件的重要配置

0.核心配置文件

  • mybatis-config.xml
  • MyBatis 的配置文件控制了 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:
  • 必须按照以下顺序配置,否则会报错(可以缺,不能乱)
    • configuration(配置)
    • properties(属性)
    • settings(设置)
    • typeAliases(类型别名)
    • typeHandlers(类型处理器)
    • objectFactory(对象工厂)
    • plugins(插件)
    • environments(环境配置)
      • environment(环境变量)

        • transactionManager(事务管理器)
        • dataSource(数据源)
    • databaseIdProvider(数据库厂商标识)
    • mappers(映射器)

1.environments

  • 环境
  • MyBatis 可以配置多个环境。每个 SqlSessionFactory 实例只能选择一种环境。
  • 主要结构:
    • environment(环境变量)

      • transactionManager(事务管理器)
      • dataSource(数据源)

environment(环境变量)

 1 <!--default为默认环境-->
 2 <environments default="development">
 3     <!--环境1-->
 4   <environment id="development">
 5     <transactionManager type="JDBC">
 6       <property name="..." value="..."/>
 7     </transactionManager>
 8     <dataSource type="POOLED">
 9       <property name="driver" value="${driver}"/>
10       <property name="url" value="${url}"/>
11       <property name="username" value="${username}"/>
12       <property name="password" value="${password}"/>
13     </dataSource>
14   </environment>
15
16   <!--环境2-->
17   <environment id="development">
18     <transactionManager type="JDBC">
19       <property name="..." value="..."/>
20     </transactionManager>
21     <dataSource type="POOLED">
22       <property name="driver" value="${driver}"/>
23       <property name="url" value="${url}"/>
24       <property name="username" value="${username}"/>
25       <property name="password" value="${password}"/>
26     </dataSource>
27   </environment>
28 ?
29 </environments>
  • 配置了多个环境以后只需要在SqlSesssionFactoryBuilder中写入环境名称即可
可以接受环境配置的两个方法签名是:?
1 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
2 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);
 

transactionManager(事务管理器)

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。使用 Spring + MyBatis,则没有必要配置事务管理器

dataSource(数据源)

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • 有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):

    • UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。
    • POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。一般都是使用这个,其他下文不做说明。
    • JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。

POOLED可使用的参数

  • driver – 这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
  • url– 这是数据库的 JDBC URL 地址。
  • username – 登录数据库的用户名。
  • password – 登录数据库的密码。

2.properties

  • 属性
  • 配置文件中的所有属性可以在典型的 Java 属性文件(db.properties)中配置,也可以在properties里定义。
外部配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3308/mybatis?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8
username=root
password=mysql

外部配置和properties中都给了相同参数的配置的时候,会优先读取外部配置文件!

    <!--引入外部配置文件-->
    <properties resource="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="mysql"/>
    </properties>
<!--那么environment中的变量就可以读取properties配置的参数-->
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

3.typeAliases

  • 别名
  • 其实就是简化mapper.xml文件中参数类型"com.rzp.pojo.User",不使用别名就太长了。
  • 有两种起法:
    • 给类起别名
    • 给包起别名

给类起别名

  • 类型别名可为要使用的“类”(比如实体类User)设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
    <typeAliases>
        <typeAlias alias="User" type="com.rzp.pojo.User"/>
    </typeAliases>

那么Mapper.xml使用配置时:

 1 <mapper namespace="com.rzp.dao.UserMapper">
 2     <!--可以直接使用User而不需要像第二个方法update里写全路径-->
 3     <select id="getUserList" resultType="User">
 4     select * from mybatis.user
 5     </select>
 6
 7     <update id="updateUser" parameterType="com.rzp.pojo.User">
 8         update mybatis.user set name = #{name}, pwd = #{pwd} where  id = #{id};
 9     </update>
10 </mapper>

给包起别名

  • 类型别名可为“包”起别名,使用的时候直接把类名全部小写即可
<typeAliases>
  <package name="com.rzp.pojo"/>
</typeAliases>
1 <mapper namespace="com.rzp.dao.UserMapper">
2     <!--user大写也可以,但是官方推荐小写-->
3     <select id="getUserList" resultType="user">
4     select * from mybatis.user
5     </select>
6 </mapper>
  • 另外,如果这种情况下想自定义别名,可以为类增加注解:
@Alias("author")
public class Author {
    ...
}

Java内置类的默认别名

  • 简单列举几个,其他可以去查,大致规则:

    • 前面加下划线,是指8大基本类型
    • 不加下划线是包装类,使用小写
别名 映射的类型
_int int
int Integer
decimal BigDecimal
map Map

4.setting

    • 设置
    • 其中重要:
设置名 描述 有效值 默认值
cacheEnabled 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 true | false true
lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。 true | false false
mapUnderscoreToCamelCase 是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。 true | false False
logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING 未设置
<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
</settings>

5.mappers

  • 映射器
  • 有4种使用方式,不同点见注释
 1 <!-- 使用相对于类路径的资源引用,不要求同名同路径,只要xml里的namespace配置正确就可以-->
 2 <mappers>
 3   <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
 4 </mappers>
 5 <!-- 使用映射器接口实现类的完全限定类名,要求接口和xml文件必须在同一个包下而且同名! -->
 6 <mappers>
 7   <mapper class="org.mybatis.builder.AuthorMapper"/>
 8 </mappers>
 9 ?
10 <!-- 将包内的映射器接口实现全部注册为映射器,要求接口和xml文件必须在同一个包下而且同名! -->
11 <mappers>
12   <package name="org.mybatis.builder"/>
13 </mappers>
14 ?
15 <!-- 使用完全限定资源定位符(URL),不推荐使用!! -->
16 <mappers>
17   <mapper url="file:///var/mappers/AuthorMapper.xml"/>
18 </mappers>
19 ?
接口和xml文件必须在同一个包下而且同名:

其他配置

  •   并不是很重要,需要再去官网看。
    • ypeHandlers(类型处理器)
    • objectFactory(对象工厂)
    • plugins(插件)
      • mybatis-generator-core --根据数据库自动生成增删改查,但是可能出问题
      • mybatis-plus --增删改查的语句都不用写了
      • 通用mapper
      • 还有其他插件,可以在maven仓库找

原文地址:https://www.cnblogs.com/renzhongpei/p/12571473.html

时间: 2024-10-12 11:29:58

MyBatis(三):核心配置文件的重要配置的相关文章

Mybatis 创建核心配置文件和 SQL 映射文件

Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-config.xml 或 xxxMapper.xml 即可.但是此时创建的 xml 文件达不到 Mybatis 配置文件的效果,运行必定报错找不到 URI.因为 Mybatis 配置文件头部包含了 URI 和 PUBLIC 等信息.因此我们先在 eclipse 中导入 Mybatis 两个配置文件各自

03.MyBatis的核心配置文件SqlMapConfig.xml

SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境集合属性对象) environment(环境子属性对象) transactionManager(事务管理) dataSource(数据源) mappers(映射器) ---------------------

spring核心配置文件_Elasticsearch搜索配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/sche

MyBatis的核心配置

1.1MyBatis的核心对象 在使用MyBatis框架时,主要涉及两个核心对象:SqlSessionFactory和SqlSession,它们在MyBatis框架中起着至关重要的作用.本节将对这两个对象进行详细讲解. 1.1.1SqlSessionFactory SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像, 其主要作用是创建SqlSession.SqlSessionFactory对象的实例可以通过SqlSessionFac

MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(三)--优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org

【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)

Mybatis(1.核心配置文件.Properties.Settings.typeAliases...) 2017年04月23日 22:52:36 阅读数:1527 此章主要介绍sqlMapConfiguragion.xml的核心配置属性. mybatis.mappers.Environments.ObjectFactory.typeHandlers.Properties.Settings.typeAliases.Plugins 原链接为:https://blog.csdn.net/www105

MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射

一.MyBatis配置文件概要 MyBatis核心配置文件在初始化时会被引用,在配置文件中定义了一些参数,当然可以完全不需要配置文件,全部通过编码实现,该配置文件主要是是起到解偶的作用.如第一讲中我们用到conf.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN&

MyBatis基础入门《五》核心配置文件

MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-config.xml 文件. 资料参考:http://www.mybatis.org/mybatis-3/ 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUB