【MyBatis】第二篇:核心配置文件常用标签

news2025/1/13 19:43:09

前提

Mbatis的配置文件中的顺序如下:

MyBatis核心配置文件中的标签必须安装指定的顺序配置。
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".

不要问为什么必须这样排序,因为上这句话是再写配置文件的时候,故意写错顺序后IDE报错的信息。

当然其只是一个顺序而已,不是必须将上面的标签都写上,有些是可以不写的。

environment属性

environment属性在environments标签内,这样也意味着可以配置多个environment。一般的时候如下配置:

 <!--            配置数据库连接信息,-->
    <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/testmybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

配置多个环境

<!-- environments的 default属性配置的是默认 运行环境,其后面的值就是environment中的id -->
    <environments default="development">
        <environment id="development">
           ......
        </environment>

        <environment id="test">
           .....
        </environment>
    </environments>

environments的 default属性配置的是默认 运行环境,其后面的值就是environment中的id

这就意味着在调用配置文件的时候,有一个方法是可以选择不同的id名字来选择不同的配置环境。

其实翻看文件当可以看出sqlSessionFactoryBuilder.build 方法有一个参数的,也有一个两个参数的。

//        返回SqlSessionFactory 因为是一个参数可以得到默认的配置环境
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);// 等同于build(inputStream,"development");

//        返回SqlSessionFactory 调用两个参数,可以把test的环境和development环境一样,然后修改密码是一个错误值 运行的话就会报错,可以看出其通过第二个参数来指定不同的运行环境
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream,"test");

这个其实了解即可,一般的时候不会设置两个环境变量,毕竟测试环境和开发环境一般都会一致,这样出现问题的话会更加容易知道。

transactionManager

这个标签其实是放在environment标签中的,

  <environment id="development">
    <transactionManager type="JDBC|MANAGED"/>
      .......  
   </environment>

transactionManager这个标签是设置事务管理器,其属性名type。但是其有三个不同的属性值:

  • JDBC: 使用JDBC中原生的事务管理。
  • MANAGED: 被管理,比如和spring进行整合的时候,会选择这个属性值。

dataSource

这个标签也是放在environment标签中:

    <environments default="development">
        <environment id="development">
            ......
            <dataSource type="POOLED | UNPOOLED | JNDI">
               .......
            </dataSource>
        </environment>
    </environments>

dataSource标签也有一个属性type,其也有三个值:

  • POOLED: 使用数据库连接池
  • UNPOOLED: 不适用数据库连接池
  • JNDI : 使用上下文的数据库源,简单说就是myBatis 会从JNDI 服务上查找DataSource 实例,然后返回使用 。这种配置如何实现后面单独补上一篇,不然篇幅会很长。

当然在datasource中通过property标签进行配置数据库连接的驱动,url,用户密码名。

在这里插入图片描述

但是dataSource标准type=“JNDI” 这种使用上下文的数据库源,就需要简单的进行演示了。

引用资源配置文件

这个首先创建一个properties文件:jdbc.properties,其内容如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/testmybatis
jdbc.username=root
jdbc.password=root

其路径是

在这里插入图片描述

然后mybatis-config.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<!--配置文件中可以使用哪些标签,这个地方是配置这是一个mybatis文件,使用mybatis文件标签-->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--开始配置信息-->
<configuration>
 <!-- 导入配置文件 -->   
        <properties resource="jdbc.properties"></properties>
<!-- environments的 default属性配置的是默认 运行环境,其后面的值就是environment中的id -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- com.mysql.jdbc.Driver -->
                <property name="driver" value="${jdbc.driver}"/>
                <!-- jdbc:mysql:///demo?characterEncoding=utf-8 -->
                <property name="url" value="${jdbc.url}"/>
                <!-- root -->
                <property name="username" value="${jdbc.username}"/>
                <!-- root -->
                <property name="password" value="${jdbc.password}"/>
< 
            </dataSource>
        </environment>
 
    </environments>
    <mappers>
        <!--        <mapper resource="映射文件这个地方配置sql语句,后面具体演示"></mapper>-->
        <mapper resource="mappers/StudentMapper.xml"></mapper>
    </mappers>
</configuration>

然后运行测试程序即可。

typeAliases 以及其子标签typeAlias

typeAlias标签这个其实效果有点像是sql语句中的as关键字,其作用是:设置类型的别名。

而typeAliases 就是包含所有typeAlias标签的根标签,所以不再多说什么。

这个又有三种不同的情况,有不同的效果。

首先这个是标签是写在核心配置文件的,其别名一般在映射文件中使用。

例子1: 为一个类指定一个别名

<!-- 创建一个类,其包+类名  com.xzd.domain.Student  -->

<!-- 这个配置是写在mybatis-config.xml中的 -->

<configuration>
    ....
    <typeAliases >
        <typeAlias type="com.xzd.domain.Student" alias="testname"> 
    </typeAliases>
 
    ....
</configuration>

<!-- 这个配置是写在studentMapper.xml中的 这个返回类型就可以使用自定义别名了 -->
 <select id="getAllStudent" resultType="testname">
        SELECT 	* FROM  testmybatis.student
    </select>


但是这样有一个问题,那就是每次为一个类写一个别名都需要写一条。

例子2: 为某个类来使用默认类名作为别名

<!-- 创建一个类,其包+类名  com.xzd.domain.Student  -->

<!-- 这个配置是写在mybatis-config.xml中的 -->

<configuration>
    ....
        <typeAliases >
        <typeAlias type="com.xzd.domain.Student"> 
    </typeAliases>
    ....
</configuration>

<!-- 这个配置是写在studentMapper.xml中的 这个返回类型就可以使用默认的类名作为别名了-->
 <select id="getAllStudent" resultType="Student">
        SELECT 	* FROM  testmybatis.student
    </select>


这个说白指定好类,然后不适用alias属性,默认会自动使用类名作为别名。但也有例子1中的弊端,需要对此写

补充 通过package指定包下所有类具有默认别名

<!-- 创建一个类,其包+类名  com.xzd.domain.Student  -->

<!-- 这个配置是写在mybatis-config.xml中的 -->

<configuration>
    ....
    <!-- 这样其包下的所有类,都会默认使用类名作为别名 -->
     <typeAliases >
<!--        <typeAlias type="com.xzd.domain.Student"></typeAlias>-->
        <package name="com.xzd.domain"></package>
    </typeAliases>
    ....
</configuration>

<!-- 这个配置是写在studentMapper.xml中的 这个返回类型就可以使用默认的类名作为别名了-->
 <select id="getAllStudent" resultType="Student">
        SELECT 	* FROM  testmybatis.student
    </select>


**name=“com.xzd.domain” 这样直接写包,会默认其包下的类名即为别名,而且不区别大小写。 **

注意:

  • 通过测试创建com.xzd.domain.test,这种方式可以让包名所在包之下的test包的类也可以启用默认别名,但是com.xzd.domain这个包下必须有类,也就是直接的在这个包下创建java类,不然会报错。

mappers以及其子标签mapper

这个可以导入映射配置文件,通过前面演示的例子可以看出其功能。不过有一个问题,那就是配置文件导入的一两个还好,如下:

    <mappers>
        <!--        <mapper resource="映射文件这个地方配置sql语句,后面具体演示"></mapper>-->
        <mapper resource="mappers/StudentMapper.xml"></mapper>
    </mappers>

但是如果是多个的话,那是需要输入很多行,所以其也支持包(应该说文件夹)导入,然后将其包下的配置文件,全部导入其中。

通过package包导入映射文件

而满足这种包导入需要,需要满足两个条件:

  • mapper接口和映射文件所在的包必须一致。

  • mapper接口和映射文件名字必须一致。

看图理解:

在这里插入图片描述

当然在创建配置文件的时候,没有package这个创建项目,需要通过创建directory,其中目录需要通过 **/**隔离:

在这里插入图片描述

如果中间使用 **. ** 或者 \ 的话,如果打开硬盘,就会发现其不是目录而是文件名。

然后配置文件如下:

 ....
<mappers>
  
    <package name="com.xzd.mapper" ></package>
</mappers>
....

是否好奇为什么,其实如果看编程的话,似乎是分开,但是打开其,编译后输出如下:

在这里插入图片描述

就会发现其会自动归档在一个路径下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SweetAlert让消息弹出窗口更加具有个性化!

SweetAlertSweetAlert是指可对JavaScript标准功能alert()和confirm()进行个性化定制的库。SweetAlert的要点官网上有很多示例&#xff0c;看了这些基本上就OK了。但是&#xff0c;在kintone上使用时&#xff0c;【弹出消息后更新页面】这个处理只参照示例来写的话&#xff0c;一…

微信小程序分包

1.什么是分包&#xff1f; 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 2.分包的好处对小程序进行分包的好处主要有以下两点: 可以优化小程序首次启动的下载时间在多…

Elasticsearch 核心技术(四):索引管理、映射管理、文档管理(REST API)

❤️ 个人主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、索引管理1. 创建索引创建一个索引索引设置映射字段别名2. 获取索引3. 删除索…

阿拉伯数转中文与英文[找到规律,抽象问题,转换成代码]

阿拉伯数转中文与英文前言一、阿拉伯数字转换1、阿拉伯数字转中文a、案例b、解决方案2、阿拉伯数转英文a、案例b、解决方案总结参考文献前言 如果思考算法的解法方案是一种模拟&#xff0c;那么这一般不是个好的解决方案。对于一个复杂的问题&#xff0c;挖掘其中的规律&#…

制造业管理系统如何帮助企业快速应对品质异常问题?

在企业生产制造过程中&#xff0c;成品发生品质异常问题是不可避免的。当成品出现问题&#xff0c;为了有效防范批量品质事故&#xff0c;品管需要快速判断可能是哪个材料引起的&#xff0c;需要知道这批成品是谁做的&#xff0c;什么时候做的&#xff0c;提供材料的分别是哪个…

MySQL基础篇语句--DDL语句

SQL简介 当面对一个陌生的数据库时,通常需要一种方式与它交互&#xff0c;以完成用户所需要的各种工作&#xff0c;这个时候&#xff0c;就要用到SQL语言了。 SQL是Structure Query Language(结构化查询语言)的缩写&#xff0c;它是使用关系模型的数据库应用语言&#xff0c;由…

传统推荐模型(一)协同过滤算法_UserCF和ItemCF

传统推荐模型&#xff08;一&#xff09;协同过滤算法_UserCF 1、UserCF 协同过滤就是协同大家的反馈、评价和意见一起对海量的信息进行过滤&#xff0c;从中筛选出目标用户可能感兴趣的信息的推荐过程。 物品1物品2物品3物品4物品5用户131233用户243435用户333154用户41552…

OneNote(或印象笔记)迁移到Joplin的方法

2023年1月10日实操记录简介背景是必须卸载OneNote&#xff0c;所以要迁移笔记。告别了用了23年的Outlook &#xff0c;和10年左右的OneNote&#xff0c;小伤感&#xff0c;自此一别 就不能用练就的VBA技能在Excel和Access中处理数据了。。。基本前提Joplin支持.enex格式文件的导…

总结述职报告撰写方法,报告目的、对象、内容、技巧等

导语 又到年末时&#xff0c;述职报告再一次席卷而来。这篇文章将带来干货满满的述职报告撰写方法&#xff0c;包括述职目的、对象、内容、技巧等多个方面。 一、述职目的 有多少人认为&#xff0c;述职只是走个形式&#xff0c;走个过场的&#xff1f; 如果你这样认为&#x…

2023济南制药机械展|中国(济南)国际制药机械与包装技术展览会

2023中国&#xff08;济南&#xff09;国际制药机械与包装技术展览会将于2023年3月30-4月1日在山东国际会展中心&#xff08;济南市槐荫区日照路1号&#xff09;同期举办&#xff1a;2023第11届国际生物发酵展2023国际生化仪器与实验室装备展2023国际生物技术与生物制药展支持单…

以太网链路聚合与交换机堆叠、集群

网络的可靠性 网络的可靠性指当设备或者链路出现单点或者多点故障时保证网络服务不间断的能力网络的可靠性可以从单板、设备、链路多个层面实现 一般重要的核心设备都有一定的冗余 s12700E-8机框正面结构 框式交换机由机框、电源模块、风扇模块、主控板、交换网板&#xff…

CSS入门六、常用技巧

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…

人工智能-linux高级操作命令

目录1、 重定向命令2、查看文件内容命令3、链接命令3.1 软链接4、查找文件内容命令5、查找文件命令6、压缩和解压缩文件7、文件权限命名8、获取管理员权限的相关命令9、远程登陆、远程拷贝10、软件安装与卸载11、vim介绍1、 重定向命令 将目录下的文件名全部写入新文件 touch …

场景编程集锦 - BMI指数与健身达人

1. 场景描述 BMI指数&#xff08;身体质量指数&#xff0c;英文Body Mass Index&#xff09;是用体重公斤数除以身高米数的平方得出的数字&#xff0c;是目前国际上通用的衡量人体胖瘦程度以及是否健康的一个标准。“身体质量指数”这个概念&#xff0c;是由19世纪中期的比利时…

马蹄集 宽度与对齐

宽度与对齐 难度&#xff1a;白银 时间限制&#xff1a;1秒巴占用内存&#xff1a;64M 输出455、-123、987654&#xff0c;宽度为5&#xff0c;分别左对齐和右对齐 格式 输入格式&#xff1a;无 输出格式&#xff1a;输出为整型&#xff0c;空格分隔。每个数的输出占一行 #inc…

[34]. 在排序数组中查找元素的第一个和最后一个位置

在排序数组中查找元素的第一个和最后一个位置题目算法设计&#xff1a;二分查找题目 算法设计&#xff1a;二分查找 进行两次二分查找&#xff08;定制版本&#xff09;&#xff0c;第一次先查找【第一个大于等于target的数】&#xff0c;第二次再查找【第一个大于target的数】…

Mac安装python3并配置环境变量

文章目录homebrew 安装 python3配置 python3 环境变量homebrew 安装 python3 可以用 homebrew 安装&#xff0c;也可以官网下载安装&#xff0c;我这里选择使用 homebrew 安装&#xff0c;没有装 homebrew 的小伙伴请自行百度 brew install python3我们执行下 python3 发现可…

Centos7安装高版本zshzim框架安装powerlevel10k

1. 安装高版本zsh 1.1 卸载低版本zsh sudo yum remove zsh -y1.2 下载源码 源码&#xff1a;https://zsh.sourceforge.io/Arc/source.html # 下载 wget https://jaist.dl.sourceforge.net/project/zsh/zsh/5.9/ # 解压 $ tar xvf zsh-5.9.tar.xz1.3 编译安装 yum install …

新应用——养老院管理应用,信息化的多功能管理应用

养老院管理系统专门为医养结合的养老机构量身打造的信息化管理系统&#xff0c;还适用于社区医院&#xff0c;包含诊断、病历、财务、物资、照护记录、处方等功能点。此应用分为经营管理、长者管理、物资库存、财会综合等四个大模块&#xff0c;全方面打造适用于养老院&#xf…

精准招聘!一图了解2023牛客校招专场

当「简历海投」成为当代大学生一种「硬核求职」的方式&#xff0c;如何精准地找到与招聘目标相匹配的专业人才成为HR校园招聘工作中的一大难点。为了帮助企业解决这些难题&#xff0c;牛客为企业推出了「牛客招聘专场」助力企业做好雇主品牌传播&#xff0c;提升收到的简历质量…