• 【MyBatis笔记02】MyBatis核心配置文件介绍


    这篇文章,主要介绍MyBatis的核心配置文件及其相关标签属性。

    目录

    一、MyBatis配置文件

    1.1、数据源配置

    (1)transactionManager

    (2)dataSource

    1.2、properties标签

    1.3、typeAliases标签

    1.4、mappers标签

    (1)resources

    (2)package


    一、MyBatis配置文件

    1.1、数据源配置

    MyBatis配置文件中,通过标签来配置数据源,数据源可以配置多个,通过【default】属性指定使用哪个数据源。由于可以配置多个数据源,所以最外层需要通过标签进行统一的管理。

    1. <environments default="development">
    2. <environment id="development">
    3. <transactionManager type="JDBC"/>
    4. <dataSource type="POOLED">
    5. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    6. <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    7. <property name="username" value="root"/>
    8. <property name="password" value="root"/>
    9. dataSource>
    10. environment>
    11. <environment id="prod">
    12. <transactionManager type="JDBC"/>
    13. <dataSource type="POOLED">
    14. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    15. <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    16. <property name="username" value="root"/>
    17. <property name="password" value="root"/>
    18. dataSource>
    19. environment>
    20. environments>

    (1)transactionManager

    事务管理器的type属性可选值:

    type属性可以有两个可选值:

    • JDBC:表示采用原生的JDBC来进行事务的管理。
    • MANAGED:表示被框架进行管理事务。

    (2)dataSource

    dataSource用于设置数据源的连接信息,它的type属性可以有三个可选值:

    type属性可选值:

    • POOLED:采用数据库连接池来管理数据源。
    • UNPOOLED:不使用数据库连接池。
    • JNDI:表示使用上下文中的数据源。

    1.2、properties标签

    properties标签用于引入外部的properties文件,例如:在配置数据源的时候,可以引入外部的properties文件,然后通过EL表达式获取对应的连接信息。【】标签必须在【】标签之前使用,这是MyBatis配置文件的约束规范定义的,可以查看标签的使用先后顺序。

    在【src/main/resources】目录下面,新建一个【jdbc.properties】文件。

    1. jdbc.driver=com.mysql.cj.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost:3306/mybatis
    3. jdbc.username=root
    4. jdbc.password=root

    然后在MyBatis的配置文件里面,通过【】标签引入jdbc.properties文件,通过EL表达式获取对应的变量值。

    1. <properties resource="jdbc.properties"/>
    2. <environments default="development">
    3. <environment id="development">
    4. <transactionManager type="JDBC"/>
    5. <dataSource type="POOLED">
    6. <property name="driver" value="${jdbc.driver}"/>
    7. <property name="url" value="${jdbc.url}"/>
    8. <property name="username" value="${jdbc.username}"/>
    9. <property name="password" value="${jdbc.password}"/>
    10. dataSource>
    11. environment>
    12. environments>

    1.3、typeAliases标签

    typeAliases标签用于设置类型别名,也就是说,如果通过这个标签指定了某个类的包路径名称别名之后,我们之后在Mapper映射文件里面使用这个类的时候,可以使用别名进行访问。

    1. <typeAliases>
    2. <typeAlias type="com.mybatis.demo.domain.User" alias="User"/>
    3. typeAliases>
    • type属性就是用于指定具体的类路径名称。
    • alias用于指定当前类的别名,默认情况下,如果没有设置alias属性,那么MyBatis会默认别名是当前类名称。

    设置类型别名之后,我们这个时候在Mapper映射文件里面,就可以直接使用别名,而不用写具体的类名称,如下所示:

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.mybatis.demo.mapper.UserMapper">
    5. <select id="queryList" resultType="User">
    6. select * from user
    7. select>
    8. mapper>

    上面配置可以看到,一个类就需要设置一个类型别名,那这样子太麻烦了,如果有100个类,那不得添加100个类型标签吗???MyBatis考虑到了这一点,可以通过【】标签来设置某一个包下面的所有类的类型别名。

    1. <typeAliases>
    2. <package name="com.mybatis.demo.domain"/>
    3. typeAliases>

    1.4、mappers标签

    mappers标签用于指定具体的Mapper映射文件路径,这个就是告诉MyBatis应该去哪个目录下面,查找对应的SQL映射文件。Mapper映射文件有两种配置方式,分别如下所示:

    (1)resources

    通过resources属性来指定Mapper映射文件所在路径,这个resources只能够指定【src/main/resources】目录下的路径。

    1. <mappers>
    2. <mapper resource="UserMapper.xml"/>
    3. mappers>

    (2)package

    通过package标签来指定Mapper映射文件所在的路径,使用这个package标签必须满足下面两个条件:

    • Mapper映射文件所在的包路径,必须和Mapper接口所在的包路径相同。
    • Mapper映射文件名称,必须和Mapper接口的名称相同。

    如果不满足上面两个条件,运行时候会报错:BindingException绑定异常。

    1. <mappers>
    2. <package name="com.mybatis.demo.mapper"/>
    3. mappers>

    这个时候,对应的Mapper映射文件可以放在两个地方:

    • 第一种情况:Mapper映射文件是和Mapper接口放在一起。
    • 第二种情况:Mapper映射文件是放在【src/main/resources】目录下,并且位于和Mapper接口具有相同的目录下面。
    • 第一种情况:放在同一个包路径下面。

    对于Mapper映射文件放在类路径下面的情况,再使用maven打包的时候,需要在【pom.xml】配置文件中添加如下配置,如果没有配置的话,打包时候不会将XML文件一起打包到target目录中,从而导致运行过程中报错。

    1. <build>
    2. <resources>
    3. <resource>
    4. <directory>src/main/resourcesdirectory>
    5. <includes>
    6. <include>**/*.*include>
    7. includes>
    8. resource>
    9. <resource>
    10. <directory>src/main/javadirectory>
    11. <includes>
    12. <include>**/*.xmlinclude>
    13. includes>
    14. resource>
    15. resources>
    16. build>

    添加上面配置之后,运行之后,就会将XML文件打包到target目录里面。

    • 第二种情况:放在resources目录下面。

    上面两种配置方式,最终打包到target目录之后,对应的Mapper接口和Mapper映射文件都将同一个目录下面。

    在上面配置过程中,如果mapper映射文件配置不正确,那么在运行过程中就会报错BindingException绑定异常,如下所示:

    1. Exception in thread "main" org.apache.ibatis.binding.BindingException:
    2. Invalid bound statement (not found):
    3. com.mybatis.demo.mapper.UserMapper.queryList
    4. at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:235)
    5. at org.apache.ibatis.binding.MapperMethod.(MapperMethod.java:53)
    6. at org.apache.ibatis.binding.MapperProxy.lambda$cachedInvoker$0(MapperProxy.java:108)
    7. at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)

    以上,就是MyBatis框架常见的配置文件属性介绍,在实际开发过程中,MyBatis的配置文件几乎不会使用到这些配置,实际的开发过程中都是通过和Spring、SpringMVC集成在一个配置文件里面,或者直接使用SpringBoot的默认配置,只需要指定mapper映射文件路径即可。

    综上,这篇文章结束了,主要介绍MyBatis的核心配置文件及其相关标签属性。

  • 相关阅读:
    通过shell编写内存监视的脚本来介绍一些基本shell脚本操作
    苏宁API:一键搜索,海量商品任你选!
    京东API接口的应用场景:商品信息查询,商品详情获取
    openharmony容器组件之Badge
    Spring 03: xml的构造方法注入
    【MYSQL】索引
    MySQL:分库分表
    c++成员函数做回调
    【JavaScript保姆级教程】JavaScript的介绍和简单语法
    机试(2017 cs se)
  • 原文地址:https://blog.csdn.net/qq_39826207/article/details/126213826