三、MyBatis核心配置文件详解_mysql


文章目录

  • 三、MyBatis核心配置文件详解


三、MyBatis核心配置文件详解

application.properties

server.port=8018
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.31.20:3306/litemall
jdbc.username=root
jdbc.password=123456

详情请看mybatis-config.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--配置约束-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--
        MyBatis核心配置文件中,标签的顺序:
        properties?,settings?,typeAliases?,typeHandlers?,
        objectFactory?,objectWrapperFactory?,reflectorFactory?,
        plugins?,environments?,databaseIdProvider?,mappers?
    -->

    <!--引入properties文件,此时就可以${属性名}的方式访问属性值-->
    <properties resource="application.properties" />

    <settings>
        <!--将表中字段的下划线自动转换为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    
    <!--设置类型别名-->
    <typeAliases>
        <!--
            typeAlias:设置某个具体的类型的别名
            属性:
            type:需要设置别名的类型的全类名
            alias:设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名且不区分大小
            写
            若设置此属性,此时该类型的别名只能使用alias所设置的值
        -->
        <typeAlias type="com.mybatis.entity.User" alias="User"></typeAlias>
        <!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
<!--        <package name="com.mybatis.entity"/>-->
    </typeAliases>

    <!--
        environments:配置多个连接数据库的环境
        属性:
            default:设置默认使用的环境的id
    -->
    <environments default="development">
        <!--
            environment:设置具体的连接数据库的环境信息
            属性:
            id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的id,
            表示默认使用的环境
        -->
        <environment id="development">
            <!--
                transactionManager:设置事务管理方式
                属性:
                type:设置事务管理方式,type="JDBC|MANAGED"
                type="JDBC":设置当前环境的事务管理都必须手动处理
                type="MANAGED":设置事务被管理,例如spring中的AOP
            -->
            <transactionManager type="JDBC"/>
            <!--
                dataSource:设置数据源
                属性:
                type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"
                type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从
                缓存中直接获取,不需要重新创建
                type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建
                type="JNDI":调用上下文中的数据源
            -->
            <dataSource type="POOLED">
                <!--设置连接数据库的驱动-->
                <property name="driver" value="${jdbc.driver}"/>
                <!--设置连接数据库的连接地址-->
                <property name="url" value="${jdbc.url}"/>
                <!--设置连接数据库的用户名-->
                <property name="username" value="${jdbc.username}"/>
                <!--设置连接数据库的密码-->
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>

        <!--配置生产环境-->
        <environment id="prod">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.31.20:3306/litemall"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--引入映射文件-->
    <mappers>
<!--        <mapper resource="mapper/UserMapper.xml"/>-->
        <!--
            以包为单位引入映射文件
            要求:
            1、mapper接口所在的包要和映射文件所在的包一致
            2、mapper接口要和映射文件的名字一致
        -->
        <package name="com.mybatis.mapper"/>
    </mappers>
</configuration>

注意点1:

问题:mybatis-config.xml中的属性标签是有顺序的,乱写会报错,如图1

解决方案:按顺序书写即可,把<typeAliases>标签放在<properties>之后即可。

三、MyBatis核心配置文件详解_MyBatis核心配置文件_02

注意点2:实体类可以设置别名,

问题:为啥需要设置别名?一定要设置吗?

答案:不一定非得设置,但是设置别名后使用更加简洁、清爽。

比如com/mybatis/mapper/UserMapper.xml中的定义<select id=“getUserById” resultType=“com.mybatis.entity.User”>,请看resultType属性配置包名,如果包名嘎嘎长,那么这里也会写的嘎嘎长,很不优雅;而如果在mybatis-config.xml定义别名,那么可以写成<select id=“getAllUser” resultType=“User”>,瞬间清爽了许多。

三、MyBatis核心配置文件详解_mysql_03

注意点3:针对注意点2中,配置类别名有2种方式

  • 方式1:单独一个一个引入实体类。
<typeAlias type="com.mybatis.entity.User"></typeAlias>
  • 方式2:指定包名,默认会把包下面所有实体定义别名,实体类的类名作为别名,且不区分大小写。
<package name="com.mybatis.entity"/>

注意点4:设置类别名时,采用<typeAlias>标签如果设置alias属性,那么这个alias属性值就是唯一的别名且不区分大小写;如果没设置alias属性,那么alias属性值就采用类名。具体请看下方代码,resultType属性值设置大小写都能查询结果:

<select id="getAllUser" resultType="User">
        select * from litemall.litemall_user
</select>
------------------------------------------------
<select id="getAllUser" resultType="user">
        select * from litemall.litemall_user
</select>

注意点5:mybatis-config.xml中引入映射文件也有2种方式

  • 方式1:单独一个一个引入xml文件,比如
<mapper resource="mapper/UserMapper.xml"/>
  • 方式2:指定包名,注意其中的2点注意事项
<!--
            以包为单位引入映射文件
            要求:
            1、mapper接口所在的包要和映射文件所在的包一致
            2、mapper接口要和映射文件的名字一致
-->
<package name="com.mybatis.mapper"/>

注意点6:针对注意点5中如果采用方式1引入指定的xx.xml,那么它可以放在任何目录下,比如如图1,UserMapper接口在包com.mybatis.mapper路径下,而UserMapper.xml则在resources下的mapper路径下,哪怕两个路径不同名也没问题;但是如果采用方式2,包名不同名的话就会报错如图2,所以必须同名,改为如图3中的效果就可以正常运行。

三、MyBatis核心配置文件详解_java_04


如图1

三、MyBatis核心配置文件详解_mysql_05


如图2

三、MyBatis核心配置文件详解_MyBatis核心配置文件_06


如图3

注意点7:mybatis-config.xml中可以配置多环境,比如开发环境,生产环境等,他们读取的是不同的配置信息,调用不同的数据库。其中标签<environments>中的default属性,用来指定加载哪个环境的配置信息。

<!--
        environments:配置多个连接数据库的环境
        属性:
            default:设置默认使用的环境的id
    -->
    <environments default="development">
        <!--
            environment:设置具体的连接数据库的环境信息
            属性:
            id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的id,
            表示默认使用的环境
        -->
        <environment id="development">
            <!--
                transactionManager:设置事务管理方式
                属性:
                type:设置事务管理方式,type="JDBC|MANAGED"
                type="JDBC":设置当前环境的事务管理都必须手动处理
                type="MANAGED":设置事务被管理,例如spring中的AOP
            -->
            <transactionManager type="JDBC"/>
            <!--
                dataSource:设置数据源
                属性:
                type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"
                type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从
                缓存中直接获取,不需要重新创建
                type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建
                type="JNDI":调用上下文中的数据源
            -->
            <dataSource type="POOLED">
                <!--设置连接数据库的驱动-->
                <property name="driver" value="${jdbc.driver}"/>
                <!--设置连接数据库的连接地址-->
                <property name="url" value="${jdbc.url}"/>
                <!--设置连接数据库的用户名-->
                <property name="username" value="${jdbc.username}"/>
                <!--设置连接数据库的密码-->
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>

        <!--配置生产环境-->
        <environment id="prod">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.31.20:3306/litemall"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
</environments>

`注意点8:mybatis-config.xml中可以指定加载哪个配置文件名称的信息,假设你数据库连接配置放在自定义配置文件名称叫xx.properties,在这里就可以指定加载,这里主要和<environments>标签一起使用,通过${}获取属性值。

<!--引入properties文件-->
<properties resource="application.properties" />