MyBatis笔记:xml配置文件

2021/9/1 6:07:38

本文主要是介绍MyBatis笔记:xml配置文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

xml配置文件指的是MyBatis的核心配置文件,包括数据库连接信息、mapper映射器、别名配置等,本文只是简单记了一点学习笔记,想要了解更多,可以参考MyBatis中文文档 https://mybatis.org/mybatis-3/zh/configuration.html

基本使用

可以根据官网介绍新建一个基础的xml文件,然后根据自己的需要配置指定项即可,文件名可以自定义,文件位置也可以自己指定,只需要在 SqlSessionFactoryBuilderbuild 中传入进行使用即可。

// mybatis_config.xml就是我自定义的配置文件,并放在src/main/resources目录下,
// 因为是在maven项目中,所以maven会自动到src/main/resources下寻找对应的文件
String resource = "mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

注: mybatis中的配置项是有先后顺序的,不能随意配置,配置的先后顺序为 properties > settings > typeAliases > typeHandlers > objectFactory > objectWrapperFactory > reflectorFactory > plugins > environments > databaseIdProvider > mappers ,如果没有该配置项,则可以跳过。在IDEA中如果配置错了顺序,它会提示你正确的顺序的。

引用properties文件

可以将一些配置项(如数据库连接信息)单独配置在properties文件中,然后在xml配置文件中使用 properties 标签将properties文件的内容引入到xml配置文件中,properties文件中的配置项以 ${config_name} 的方式进行引用。 properties 标签下也可以定义 property 子标签,用于单独配置属性。

例如:在 src/main/resources 下新建一个db.properties文件配置数据库连接信息。

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

然后在mybatis配置文件中进行引用。

<configuration>
    <!-- 引入外部配置文件 -->
    <properties resource="db.properties">
        <!-- 单独配置属性 -->
        <property name="username" value="root"/>
    </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>
</configuration>

为实体类配置别名

在mapper.xml映射文件中引用实体类时,每次都需要输入实体类的完整路径,如果使用到地方比较多的话,可以为对应实体类的路径配置别名。可以在mybatis配置文件中使用 typeAliases 标签为实体类配置别名,配置方式有两种,一种是直接在mybatis配置文件中指定别名,另一种是在mybatis配置文件中指定包名,指定包名后,mybatis可以直接在包中寻找对应的实体类。

直接指定别名

配置别名后直接在对应mapper.xml映射文件中使用别名即可。

mybatis配置文件

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

    <typeAliases>
        <!-- 直接为某个具体的实体类指定别名 -->
        <typeAlias type="com.mb.pojo.User" alias="User"/>
    </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>

    <mappers>
        <!-- 配置对应的mapper.xml映射文件 -->
        <mapper resource="com/mb/dao/UserMapper.xml" />
    </mappers>
</configuration>

UserMapper.xml文件

<mapper namespace="com.mb.dao.UserMapper">
    <!-- resultType的值使用的就是配置后的别名 -->
    <select id="getUserList" resultType="User">
        select * from mybatis.user;
    </select>
</mapper>

指定包路径

指定了包路径后,mybatis可以直接扫描该包下的所有实体类,然后自动为该类指定别名为类的首字母小写形式。如果不想使用它默认的别名方式,可以在实体类上使用注解进行自定义。

mybatis配置文件

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

    <typeAliases>
        <!-- 指定包路径,默认别名为类的首字母小写形式 -->
        <package name="com.mb.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>

    <mappers>
        <!-- 配置对应的mapper.xml映射文件 -->
        <mapper resource="com/mb/dao/UserMapper.xml" />
    </mappers>
</configuration>

mapper.xml文件

<mapper namespace="com.mb.dao.UserMapper">
    <!-- resultType的值使用的就是类名首字母小写形式的别名 -->
    <select id="getUserList" resultType="user">
        select * from mybatis.user;
    </select>
</mapper>

通过在实体类上使用注解自定义别名

package com.mb.pojo;

import org.apache.ibatis.type.Alias;

// 通过注解的方式配置别名
@Alias("common_user")
// 实体类
public class User {}

默认别名

除了自定义别名之外,mybatis还有一些默认的别名可以直接使用,具体见 https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases

别名 映射的类型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
object Object
map Map
hashmap HashMap
list List
arraylist ArrayList
collection Collection
iterator Iterator

映射器mappers

映射器即 mappers 配置项,作用就是将mapper.xml映射文件和操作实体类的接口对应起来,让接口中的方法时可以与mapper.xml映射文件中的SQL关联起来,配置方式有三种:配置xml文件路径、配置接口路径和配置包路径。

配置xml文件路径

示例如下:

<configuration>
    <mappers>
        <!-- 路径分隔符为斜杠 -->
        <mapper resource="com/mb/dao/UserMapper.xml" />
    </mappers>
</configuration>

配置接口路径

配置接口路径的方式需要注意:mapper.xml需要和接口同名,且在同一包下。

<configuration>
    <mappers>
        <mapper class="com.mb.dao.UserMapper"/>
    </mappers>
</configuration>

配置包路径

配置包路径和配置接口路径一样:mapper.xml需要和接口同名,且在同一包下。

<configuration>
    <mappers>
        <package name="com.mb.dao"/>
    </mappers>
</configuration>


这篇关于MyBatis笔记:xml配置文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程