mybatis全局变量的应用详解
mybatis.configuration.variables
mybatis.configuration.variables是一个可自定义的全局变量,本篇以springboot项目为例说明问题,源码如下,部分省略:
package org.apache.ibatis.session;
public class Configuration {protected Properties variables;
}
就是一个properties的属性配置对象,这个对象中的属性,是作为mybatis的全局变量出现的,可以在mapper.xml文件中直接引用。
如何定义
mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.democonfiguration:variables:userId: 456132465userName: 李四
mapper.xml中的使用
user_id = '${userId}'
user_name = '${userName}'或者<if test="'${userName}' != null and '${userName}' != ''">/* 这样写也没有问题 */
</if>
需要加引号,数字类型的可以不用管, 但如果遇到属性值为中文,不加引号报错提示列找不到,这个问题不难理解, 弄明白了mybatis的#和$的区别就明白了。
如何修改
这样的值很多时候要作为系统配置文件出现,如果需要动态修改,在不重启项目的情况改变数据或业务:
package org.apache.ibatis.session;import java.sql.Connection;public interface SqlSessionFactory {SqlSession openSession();SqlSession openSession(boolean var1);SqlSession openSession(Connection var1);SqlSession openSession(TransactionIsolationLevel var1);SqlSession openSession(ExecutorType var1);SqlSession openSession(ExecutorType var1, boolean var2);SqlSession openSession(ExecutorType var1, TransactionIsolationLevel var2);SqlSession openSession(ExecutorType var1, Connection var2);Configuration getConfiguration();
}
修改数据,需要从spring容器中获取到bean,可以用mybatis的SqlSessionFactory来获取。
@RestController
public class TestController {@Autowiredprivate SqlSessionFactory sqlSessionFactory;@GetMapping("/get")public String get() {org.apache.ibatis.session.Configuration configuration = sqlSessionFactory.getConfiguration();Properties variables = configuration.getVariables();String userId= variables.getProperty("userId");String userName= variables.getProperty("userName");return "userId-> " + userId+ " userName-> " + userName;}@GetMapping("/set")public String set(String userName) {org.apache.ibatis.session.Configuration configuration = sqlSessionFactory.getConfiguration();Properties variables = configuration.getVariables();variables.setProperty("userName", userName);return "success";}
}
不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!我一定行!
mybatis全局变量的应用详解相关推荐
- python中全局变量和局部变量详解_Python全局变量与局部变量详解
Python全局变量与局部变量详解#Python中的变量:全局变量和局部变量 #在很多语言中,在声明全局变量的时候,都喜欢把全局变量的名称定义为大写 #定义学生人数为100 STUDENT_NUMBE ...
- Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解
封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...
- MyBatis中@MapKey使用详解
MyBatis中@MapKey使用详解 我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对 ...
- MyBatis的缓存机制详解
MyBatis的缓存机制详解 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率.MyBatis中默认定义了两级缓存,分别是一级缓存和二级缓存. ( ...
- python定义静态变量_对Pyhon实现静态变量全局变量的方法详解
python不能像C++一样直接定义一个static变量或者通过extern来导入别的库的变量而实现数据共享,但是python的思想是通过模块化来解决这个问题,就是通过模块来实现全局变量. 首先新建一 ...
- 【MyBatis】MyBatis 二级缓存全详解
1.概述 转载:MyBatis 二级缓存全详解 上一篇文章中我们介绍到了 MyBatis 一级缓存其实就是 SqlSession 级别的缓存,什么是 SqlSession 级别的缓存呢?一级缓存的本质 ...
- Mybatis(三) 映射文件详解
前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...
- Mybatis核心配置文件xml详解
<!-- configuration:在dtd约束中? 代表一次或零次+ 代表一次或多次(最少一次,可以多次)* 代表零次或多次(有没有都可以), :逗号 特定的顺序()| :竖杠 任选其一能添 ...
- 深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)
文章转自http://blog.csdn.net/l454822901/article/details/51829785 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章 ...
最新文章
- php 错误关闭_五种方法教你如何关闭php错误回显信息
- 用ABAP实现SM36的设置后台JOB
- IOS 企业版发布后,用户通过sarafi浏览器安装无效的解决方案
- adcetris研发历程_抗体类药物质量控制—张伯彦20130730.pdf
- 股票市值高好还是低好呢?
- 【Java从0到架构师】Filter_Listener_AJAX
- oracle 索引快速全扫描,用Oracle 9i全索引扫描快速访问数据
- Oracle 向上递归、向下递归
- django的 信号
- Ubuntu部署KVM服务器
- Qt中QScrollArea控件区域与滑动条的颜色不一致设置
- 12款网盘搜索神器以备不时之需要
- 规范小区电瓶车充电桩的分布保障充电安全
- 网易2019年实习生招聘笔试题
- 快递查询—API接口
- 2020腾讯、百度、华为Android面试题校招汇总(已拿offer
- 2019腾讯游戏客户端面试
- 【HaaS Python硬件积木】HCSR04超声波测距传感器
- result returns more than one elements 解决办法
- “凝心聚力,携手共进”辰视智能2021第一期登山公益活动顺利举行