首页 > 其他分享 >尚硅谷MyBatis4_核心配置文件详解

尚硅谷MyBatis4_核心配置文件详解

时间:2023-03-19 16:34:24浏览次数:43  
标签:MyBatis4 jdbc 配置文件 数据库 别名 详解 mybatis 连接

<environments>

可以配置多个连接数据库的环境

default

default 属性指明了默认使用的环境 id

多个 environment 示例

<configuration>
    <!--设置连接数据库的环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>

	<environment id="test"></environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

<environment>

配置某个具体的环境

id

表示连接数据库的环境的唯一标识,不能重复

<transactionManager>

设置事务管理方式

type

  • JDBC: 表示当前环境中,执行 SQL 时,使用的是 JDBC 中原生的事务管理方式,即事务的提交或者回滚需要手动处理
  • MANAGED:设置事务被管理,如通过 Spring

<dataSource>

配置数据源

type

  • POOLED:表示使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从 缓存中直接获取,不需要重新创建
  • UNPOOLED:表示不使用数据库连接池缓存数据库连接,每次使用连接都需要重新创建
  • JNDI:表示使用上下文中的数据源

<property>

设置连接数据库驱动、链接地址、用户名、密码等

在这里是直接指定了具体的内容:

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url"
          value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>

也可以将这些值写在配置文件里,比如在 jdbc.properties 中:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8
jdbc.username=root
jdbc.password=root

使用 jdbc.作为前缀是因为可能有多个连接,用前缀加以区分

但是写好配置文件后,为了让 mybatis-config 能够读取到,还需要在 mybatis-config.xml 中引入配置文件:

<properties resource="jdbc.properties"/>

然后使用 ${属性名},就可以读取到指定的配置内容:

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

<typeAliases>

MyBatis 核心配置文件的标签顺序

properties、settings、typeAliases、typeHandlers、objectFactory、objectwrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

所以 typeAliases 需要放在 properties 之后

typeAliases 包含多个具体类型的别名

<typeAlias>

用于设置某个具体的类型的别名

<typeAliases>
    <typeAlias type="com.atguigu.mybatis.pojo.User" alias="User"/>
</typeAliases>

设置了全类名为 com.atguigu.mybatis.pojo.User 的别名为 User,这样在 mapper.xml 中就可以使用别名来替换全类名,注意类型别名不区分大小写

<!--User getUserById();-->
<select id="getUserById" resultType="User">
    select *
    from t_user
    where id = 3
</select>
<!--List<User> getAllUser();-->
<select id="getAllUser" resultType="User">
    select *
    from t_user
</select>

在 typeAlias 中 type 是必须要指定的,且 tyep 为全类名,而 alias 可以不指定,不指定的话就会采用默认的别名,即类名,且不区分大小写

<package>

以包为单位,将包下所有的类型设置默认的类型别名,这个更常用点

<typeAliases>
    <package name="com.atguigu.mybatis.pojo"/>
</typeAliases>

<mappers>

主要用来引入映射文件,可以以包为单位引入映射文件

<mappers>
    <package name="com.atguigu.mybatis.mapper"/>
</mappers>

但是这么做需要符合两个条件:

  1. mapper 接口所在的包要和映射文件所在的包一致
  2. mapper 接口要和映射文件的名字一致

image

并且在 resources 中创建包的方式为:

image

目录中间要用斜杠隔开

标签:MyBatis4,jdbc,配置文件,数据库,别名,详解,mybatis,连接
From: https://www.cnblogs.com/ShaunY/p/17233491.html

相关文章

  • Linux根目录详解
    bin:  “一种文件格式的缩写”dev: “存储硬件设备信息目录”home:“宿主目录”lib64:“64位相关的一些比较特殊的一些库文件”mnt:“存储挂载设备的目录”proc ......
  • Thread Interrupt详解
    线程interruptpublicvoidinterrupt()publicstaticbooleaninterrupted()publicbooleanisInterrupted()interrupt如下方法的调用会使得线程进入阻塞状态,而......
  • Optional 详解
    1前言Optional是Java8的新特性,专治空指针异常(NullPointerException,简称NPE)问题,它是一个容器类,里面只存储一个元素(这点不同于Conllection)。为方便用户通过Lambd......
  • 正则表达式(Regular Expression)详解
    1前言正则表达式主要用于复杂文本处理,如模式匹配、格式检验、文本替换等。常用的通配符有:^,$,*,.,,-,+,?,&,|,(),[],{}2String中的split()、matches()、r......
  • Java线程池详解
    1使用线程池的好处降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗;提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行;提高线程的......
  • JVM详解
    1JVM运行机制概述JVM运行机制类加载机制:类加载过程由类加载器来完成,即由ClassLoader及其子类实现,有隐式加载和显式加载两种方式。隐式加载是指在使用new等方式创建对......
  • etcd详解
    etcd原理详解etcd概述etcd的特点etcd是一个Go言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值存储、配置共享和服务发现等功能etcd具有以下特点:......
  • Android自动化测试框架uiautomator2详解
    1uiautomator2简介​uiautomator2是一种Android自动化测试框架,提供了点击、长按、输入文本、滑动、拖拽、截屏等方法,能够模拟用户的各种动作。用户可以通过控件......
  • tensorflow中交叉熵损失函数详解
    1前言tensorflow中定义了3个交叉熵损失函数:softmax_cross_entropy_with_logits(logits,labels)softmax_cross_entropy_with_logits_v2(logits,labels)sparse_softm......
  • java学习日记20230318-object类详解
    objectClass Object是类Object结构的根。 每个班都有Object作为超类。 所有对象(包括数组)都实现了这个类的方法。equals==和equals的区别==比较运算符,既可以......