MyBatis核心配置文件深入分析

 更新时间:2022年12月27日 11:53:32   作者:一个双子座的Java攻城狮  
这篇文章主要介绍了MyBatis核心配置文件,MyBatis的前身就是iBatis,iBatis本是由Clinton Begin开发,后来捐给Apache基金会,成立了iBatis开源项目。2010年5月该项目由Apahce基金会迁移到了Google Code,并且改名为MyBatis

MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求,必须按照下面的顺序填写节点信息:

(properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databaseIdProvider,mappers)

<configuration>
    <properties></properties>
    <settings></settings>
    <typeAliases></typeAliases>
    <typeHandlers></typeHandlers>
    <objectFactory></objectFactory>
    <objectWrapperFactory></objectWrapperFactory>
    <reflectorFactory></reflectorFactory>
    <plugins></plugins>
    <environments></environments>
    <databaseIdProvider></databaseIdProvider>
    <mappers></mappers>
</configuration>

环境配置与 mappers 映射器

基本的 MyBatis 配置:

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <!--每个mapper.xml都需要在mybatis配置文件中进行配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

在上面这段配置中配置了运行环境以及 mappers 映射器。

配置 environment 时,通过 transactionManager 指定事务管理器,通过 dataSource 指定数据库的引擎类型、连接方式、用户名、密码。

mappers 映射器用来和代码中写的 mapper 一一对应,在代码中写一个 mapper 接口和 mapper.xml 文件,就需要在 mappers 映射器中增加一个 mapper 节点。

属性(properties)

在写 mybatis-config.xml 环境配置的时候,将数据库的连接信息直接写在了 mybatis-config.xml 配置文件中,不方便后续的更改,因此可以使用属性(properties)的能力。

在 resources 目录下新建一个 db.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123

接着在 mybatis-config.xml 的 configuration 中添加 properties 节点,注意这个节点的位置必须放在首位。

<properties resource="db.properties">
</properties>

接着就可以用 properties 中的属性去代替 xml 中的属性

<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>

设置(settings)

配置文件中的 settings 是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

常用的设置有以下几种:

设置的配置方式如下:

<settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="mapUnderscoreToCamelCase" value="false"/>
    <setting name="logImpl" value="NO_LOGGING"/>
</settings>

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

类型别名有两种方式,第一种是对类取别名,第二种是指定一个包名

<mapper namespace="com.cn.mapper.UserMapper">
    <select id="getUserList" resultType="com.cn.pojo.User">
        select * from user;
    </select>
</mapper>

第一种方式是对类取别名,这里的 resultType 写的是类的全限定名,我们可以在 mybatis-config.xml 中使用类型别名来简化。typeAliases 在配置文件中的位置需要放在 setting 后面

<typeAliases>
    <typeAlias type="com.cn.pojo.User" alias="user"/>
</typeAliases>

这样设置之后就可以在 resultType 中直接使用 user

<mapper namespace="com.cn.mapper.UserMapper">
    <select id="getUserList" resultType="user">
        select * from user;
    </select>
</mapper>

第二种方式是指定一个包名,MyBatis 会在指定的包名路径下搜索需要的 JavaBean。修改配置文件,使用包名来指定

<typeAliases>
    <package name="com.cn.pojo"/>
</typeAliases>

每一个在包 com.lanqiaoyun.pojo 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 com.lanqiaoyun.pojo.User 的别名为 user;若有注解,则别名为其注解值

@Alias("user")
public class User {
    ...
}

上方所示完整配置文件如下:

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties">
    </properties>
    <settings>
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <setting name="logImpl" value="NO_LOGGING"/>
    </settings>
    <typeAliases>
        <package name="com.cn.pojo"/>
    </typeAliases>
    <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>
    <!--每个mapper.xml都需要在mybatis配置文件中进行配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

到此这篇关于MyBatis核心配置文件深入分析的文章就介绍到这了,更多相关MyBatis配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA插件指南之Mybatis log插件安装及使用方法

    IDEA插件指南之Mybatis log插件安装及使用方法

    这篇文章主要给大家介绍了关于IDEA插件指南之Mybatis log插件安装及使用的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-02-02
  • SpringBoot静态资源CSS等修改后再运行无效的解决

    SpringBoot静态资源CSS等修改后再运行无效的解决

    这篇文章主要介绍了SpringBoot静态资源CSS等修改后再运行无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 详解IDEA社区版(Community)和付费版(UItimate)的区别

    详解IDEA社区版(Community)和付费版(UItimate)的区别

    这篇文章主要介绍了详解IDEA社区版(Community)和付费版(UItimate)的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Gradle构建基本的Web项目结构

    Gradle构建基本的Web项目结构

    这篇文章主要为大家介绍了Gradle创建Web项目基本的框架结构搭建,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • springboot+mybatis如何屏蔽掉mybatis日志

    springboot+mybatis如何屏蔽掉mybatis日志

    这篇文章主要介绍了springboot+mybatis如何屏蔽掉mybatis日志问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • SpringMvc获取页面中的参数方法详解

    SpringMvc获取页面中的参数方法详解

    这篇文章主要介绍了SpringMvc获取页面中的参数方法详解,获取页面的参数通常都是让类实现设置HttpServletRequest request接口然后重写接口中的方法的办法来得到参数,但是在Springmvc中有其他的获取方法,需要的朋友可以参考下
    2023-10-10
  • idea将maven项目改成Spring boot项目的方法步骤

    idea将maven项目改成Spring boot项目的方法步骤

    这篇文章主要介绍了idea将maven项目改成Spring boot项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java重写equals及hashcode方法流程解析

    Java重写equals及hashcode方法流程解析

    这篇文章主要介绍了Java重写equals及hashcode方法流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 详解Java中格式化日期的DateFormat与SimpleDateFormat类

    详解Java中格式化日期的DateFormat与SimpleDateFormat类

    DateFormat其本身是一个抽象类,SimpleDateFormat 类是DateFormat类的子类,一般情况下来讲DateFormat类很少会直接使用,而都使用SimpleDateFormat类完成,下面我们具体来看一下两个类的用法:
    2016-05-05
  • SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势

    SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势

    通常我们在使用Mybatis进行开发时,会选择xml文件来写对应的sql,然后将Mapper接口与sql的xml文件建立绑定关系,然后在项目中调用mapper接口就可以执行对应的sql,感兴趣的可以学习一下
    2021-09-09

最新评论