使用外部属性

使用内部子元素属性

加载属性的顺序

属性默认值


先来官网Mybatis官网

使用外部属性

原来我们的环境配置是这样的

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<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/study?userSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments>
</configuration>

现在可以使用属性properties进行动态配置

先来一个属性文件

driver=com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/study?userSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username = root
password = password

接着就可以在Mybatis的核心配置文件中使用属性

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="db.properties"></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><mappers><mapper resource="com/lingaolu/dao/DeptMapper.xml"/></mappers>
</configuration>

使用内部子元素属性

当然我们的属性值也可以定义在内部,如

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="db.properties"><property name="username" value="root"/><property name="password" value="password"/></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><mappers><mapper resource="com/lingaolu/dao/DeptMapper.xml"/></mappers>
</configuration>

加载属性的顺序

如果一个属性在不只一个地方进行了配置,那么,MyBatis的加载顺序是怎么样的呢

我们就用用户名来举例,在3个地方都定义了用户名这个属性,正确的用户名是root,然后给值都是错的值,看最后报错的用户名的值是多少

db.properties文件使用root1

内部属性给值root2,直接赋值root3

单元测试一下

报错显示的是root3,说明最后使用的是直接赋值的

那么属性文件里的属性,和内部子元素属性的加载顺序如何呢,我们修改一下代码,不直接赋值,而是使用属性赋值

单元测试一下

报错显示的是root3,说明是先加载的是内部子元素属性

所以如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:

  • 首先读取在 properties 元素体内指定的属性
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
  • 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。

也就是官网所说明的

属性默认值

我们启用了属性默认值,并且内部子元素属性也不配置了用户名username

但是我们的属性文件db.properties还是配置了用户名username,先测试一下

单元测试一下

使用的还是属性文件里面的值,为什么没有使用默认的值,因为我们的默认值是指如果没有配置,才使用的

所以我们就得把属性文件里的username注释掉

现在username没有任何地方配置了,单元测试一下

成功了,说明已经使用了默认值root

Mybatis的属性(properties)相关推荐

  1. 属性(Properties)和字段在C#中的关系

    --摘自Rocky Ren 属性(Properties)和字段在C#中的关系 主题:这篇文章我来说下属性(Properties)和字段在C#中的关系.首先申明一下,这里讲的属性就是通常说的包含get, ...

  2. MyBatis实体属性与表的字段不对应的解决方案

    MyBatis实体属性与表的字段不对应的解决方案 参考文章: (1)MyBatis实体属性与表的字段不对应的解决方案 (2)https://www.cnblogs.com/EasonJim/p/765 ...

  3. 【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )

    文章目录 一.AST 语法树分析 一.AST 语法树分析 在上一篇博客 [Groovy]编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 ) ...

  4. mybatis中aplication.properties配置

    *关于自己spring boot整合mybatis的application.properties的配置 数据库驱动 url username password mybatis扫描的domin包定义 m ...

  5. 视频 (Video) - 属性 (Properties) - 比特率 (Bitrate)

    视频 (Video) - 属性 (Properties) - 比特率 (Bitrate) Bitrate is the number of bits per second. The symbol is ...

  6. mybatis generator 属性详解

    2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="UTF-8"?> ...

  7. mybatis基础,mybatis核心配置文件properties元素

    peroperties元素 可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递 为dataSource元素配置 1 <prop ...

  8. mybatis解决属性名和数据列名不一致

    a):列名指定别名,别名为Java的属性名 <select id="selectPet" resultType="Pet">         sel ...

  9. mybatis SqlMapConfig.xml properties

    第一种配置: <properties> <property name="jdbc.driver" value="com.mysql.jdbc.Drive ...

最新文章

  1. c#,winform,验证输入内容,文本框,长度,errorprovider组件,方便,快捷
  2. thymeleaf文档_springboot中Thymeleaf和Freemarker模板引擎的区别
  3. Spring 是解析配置类过程详解
  4. 安富莱DAC8653模块
  5. Struts+Tomcat搭建
  6. 查看本机所有请求_【松勤教育】Fiddler抓包-只抓APP的请求
  7. kvmweb管理工具_KVM web管理工具——WebVirtMgr(一)
  8. 谈谈我国电子商务中的安全问题
  9. Word2010双栏中某一处改变为单栏后,无法撤销还原为原来的双栏格式的解决方案
  10. Nginx+Php-fpm+MySQL+Redis源代码编译安装指南
  11. 开源APM系统skywalking介绍与使用
  12. ZooKeeper教程(一)----Centos7下安装ZooKeeper(单机版)
  13. 大数据Hadoop之——任务调度器Oozie(Oozie环境部署)
  14. uygurqa输入法android,uygurqa输入法app
  15. 华为:一个中国民族企业的“下半场”在哪里?
  16. 金蝶K3与IMS系统搭建销售订单交期回复系统
  17. 强烈推荐一个上网以来见过的最好的学习资料网站,全部免费!
  18. JZ2440.jflash配置
  19. 鼠标移动文字上显示图片
  20. 用贾樟柯访谈评《疯狂的程序员》

热门文章

  1. 奈奎斯特与香农定理_奈奎斯特定理和香农定理
  2. 【白手起家】Python教程01——Python总论
  3. Deeplab v1:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS
  4. 停车场车辆定位管理系统
  5. TFN TD11M 观察手用 手持式热像仪双光谱 双光谱测距热成像仪
  6. 类型多样的祥云免抠元素素材,速来收藏
  7. maven工程的目录结构
  8. Power bi 超市经典案例之利润分析(二)
  9. 微信小程序云开发入门(二)-数据库详解
  10. 【ppt课件制作】Focusky教程 | 自制模板