Mybatis mapper文件占位符设置默认值
如果要设置占位符默认值的话:需要进行 设置
org.apache.ibatis.parsing.PropertyParser.enable-default-value 属性为true启用占位符默认值处理,默认为false不启用;由于我是 SpirngBoot项目,故需要在yaml文件配置这个即可,如果你是xml或Java配置,在相应位置配置即可

这样你就可以在 mapper文件里使用 ${提取的值:默认值};分隔符默认是 冒号:;不过可以配置 看 org.apache.ibatis.parsing.PropertyParser.VariableTokenHandler这个私有内部类的构造方法即可

mapper文件sql片段使用示例
<sql id="abc">
<bind name="alias" value="'${alias:}'"/> # 这里提取变量,如果不存在,将设置为默认值(空字符串);方便下面的判断
<bind name="prefix" value="'${prefix:}'"/>
<bind name="columns" value="new String[]{'col_1','col_2','col_3'}"></bind> # 实体类对应的表的字段列表
<foreach collection="columns" item="columnName" separator=",">
<bind name="column_Name" value="( (alias != null and alias !='') ?(alias + '.') : '') + columnName + ( (prefix!=null and prefix !='') ?(' AS ' + prefix + columnName) : '')" /> # 这里加上 sql的表的别名和 AS 后的前缀
${column_Name}
</foreach>
</sql>
使用方式
<include refid="abc">
<property name="alias" value="bc"/>
<property name="prefix" value="category_" />
</include>
Mybatis 的 ${}是先有自身解析,也就是从上文下中提取值(需要开启占位符默认值处理,否则,将直接提供给OGNL处理),继而交由OGNL处理:org.apache.ibatis.parsing.GenericTokenParser#parse 查看此方法可以看到是怎么处理mapper文件 ${} 中的值的
<bind /> 标签的name和value处理方式一样,都由 org.apache.ibatis.parsing.PropertyParser.VariableTokenHandler#handleToken 方法处理

使用占位符默认值示例::
<bind name="variable" value="${name:}" /> 从mapper上下文中提取name属性值,否则将直接返回空字符串("")。
Mybatis mapper文件占位符设置默认值的更多相关文章
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
MyBatis mapper文件中的变量引用方式#{}与${}的差别 #{},和 ${}传参的区别如下:使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$ ...
- [DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异
MyBatis mapper文件引用变量#{}与${}差异 默认,使用#{}语法,MyBatis会产生PreparedStatement中.而且安全的设置PreparedStatement參数,这个过 ...
- ][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别
转自https://blog.csdn.net/szwangdf/article/details/26714603 MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使 ...
- Linux Linux下最大文件描述符设置
Linux下最大文件描述符设置 by:授客 QQ:1033553122 1. 系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 6 ...
- intellij idea 插件开发--快速定位到mybatis mapper文件中的sql
intellij idea 提供了openApi,通过openApi我们可以自己开发插件,提高工作效率.这边直接贴个链接,可以搭个入门的demo:http://www.jianshu.com/p/24 ...
- spring 配置文件属性设置默认值以及读取环境变量值
在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的,可以通过 org.springframework.beans.factory.config.PropertyPlaceh ...
- ng-option指令使用记录,设置默认值需要注意
ng-options一般有以下用法: 数组作为数据源: label for value in array select as label for value in array label group ...
- 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...
- EF Core1.0 CodeFirst为Modell设置默认值!
当我们使用CodeFirst时,有时候需要设置默认值! 如下 ; public string AdminName {get; set;} = "admin"; public boo ...
随机推荐
- owasp中国
http://www.owasp.org.cn/OWASP-CHINA/owasp-project/owasp53415927969079c198ce9669-owasp_top_10_privacy ...
- ISISv4协议测试——网络测试仪实操
文章关键词 ISIS协议:路由协议:协议测试: 一.文章简介: isis是一种与ospf很相似的网络协议(属于动态路由协议),它被应用在巨大规模网络,如运营商以及银行等.同样的它也是基于链路状态算法, ...
- BI报表系统该如何集成到其他系统呢?
近期小麦我经常收到很多用户的反馈,想知道Smartbi的报表能不能从微信/钉钉之类的直接跳转到已做好的报表页面?他们都希望通过这种方式尽可能地避免由于各个管理软件账号密码不同而造成的不便,能够在日常工 ...
- Linux:査看文件的详细信息
Linux中stat是査看文件详细信息的命令. 1.命令格式: stat [选项] 文件名/目录名 2.选项: -f:査看文件所在文件系统信息,而不是査看文件信息. 3. 案例 案例1:査看文件的详细 ...
- 【C# 异常处理】调试器 管理异常
装载自:https://docs.microsoft.com/zh-cn/visualstudio/debugger/managing-exceptions-with-the-debugger?vie ...
- Linux网卡ifcfg-eth0配置详解
DEVICE="eth1" 网卡名称 NM_CONTROLLED="yes" n ...
- 二级python考试大纲以及考试指导复习方案
二级python考试大纲与复习指导 本人也是在备考二级py 可能理解不对的地方请指正 参考网络,侵权删除 考纲解读→ 一.考试介绍 1.1考试人群 全国计算机等级考试(python语言程序设计(二 ...
- Java学习笔记:04面向对象-内部类_访问修饰符_final
04面向对象-内部类/访问修饰符/final 1.static的介绍 static:关键字,静态的 static的作用是用来修饰类中的成员 2.访问一个类中的某一个成员变量 方法一: _1.创建对象 ...
- 云原生技术赋能ISV实现应用现代化
日前,由BP商业伙伴主办,中国开源云联盟和云原生应用现代化联盟协办的2021-2022云计算生态峰会成功举办.头部ISV代表.最终用户和云原生技术专家等与会各方围绕"云原生技术赋能ISV&q ...
- WOE(weight of evidence, 证据权重)
1. WOE(weight of evidence, 证据权重) WOE是一种衡量正常样本( Good)和违约样本( Bad)分布的差异方法 WOE=ln(Distr Good/Distr Bad)例 ...