如果要设置占位符默认值的话:需要进行 设置

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文件占位符设置默认值的更多相关文章

  1. MyBatis mapper文件中的变量引用方式#{}与${}的差别

    MyBatis mapper文件中的变量引用方式#{}与${}的差别 #{},和 ${}传参的区别如下:使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$ ...

  2. [DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异

    MyBatis mapper文件引用变量#{}与${}差异 默认,使用#{}语法,MyBatis会产生PreparedStatement中.而且安全的设置PreparedStatement參数,这个过 ...

  3. ][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别

    转自https://blog.csdn.net/szwangdf/article/details/26714603 MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使 ...

  4. Linux Linux下最大文件描述符设置

    Linux下最大文件描述符设置 by:授客 QQ:1033553122 1.   系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 6 ...

  5. intellij idea 插件开发--快速定位到mybatis mapper文件中的sql

    intellij idea 提供了openApi,通过openApi我们可以自己开发插件,提高工作效率.这边直接贴个链接,可以搭个入门的demo:http://www.jianshu.com/p/24 ...

  6. spring 配置文件属性设置默认值以及读取环境变量值

    在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的,可以通过 org.springframework.beans.factory.config.PropertyPlaceh ...

  7. ng-option指令使用记录,设置默认值需要注意

    ng-options一般有以下用法: 数组作为数据源: label for value in array select as label for value in array label group ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...

  9. EF Core1.0 CodeFirst为Modell设置默认值!

    当我们使用CodeFirst时,有时候需要设置默认值! 如下 ; public string AdminName {get; set;} = "admin"; public boo ...

随机推荐

  1. 基于Windows应用程序dll劫持的权限维持

    假设我们通过某个漏洞,获取目标服务器的shell,在进行攻防的时候,为了不引起防守方(蓝队)的发现,我们要不能上来就把动作搞得很大,往往我们要对自己获取的"肉鸡"进行权限的维持,以 ...

  2. mysql安装后,过一段时间,在命令行无法启动

    这种问题主要是MYsql没有启动起来,可以在启动管理中开启mysql此服务即可解决

  3. 自助BI工具:Tableau和Smartbi的对比(下)

    上一篇我们已经将Tableau和Smartbi的自助功能分析了一部分,本文已3个重要的因素进行对比.分别从数据处理.数据可视化以及性价比方面进行分析.我们一起来看看这两个平台是各方面怎么样,帮助大家挑 ...

  4. 【C# 线程】ContextBoundObject类 --上下文绑定 和SynchronizationAttribute属性 、同步域

    NET上下文的概念 应用程序域是进程中承载程序集的逻辑分区,在应用程序域当中,存在更细粒度的用于承载.NET对象的实体,上下文是用来确定对象的逻辑归属,那就.NET上下文Context.所有的.NET ...

  5. 【C#表达式树 七】 反射在表达式树中的应用 ListInitExpression

    以下都是反射在表达式树中的应用 对象初始化 Expression.MemberInit 反射获取成员(字段 或者属性),绑定数据,然后生成 成员表达式节点 class Animal { public ...

  6. 有关SQL(2012)突然无法连接服务器的问题解答

    Sql Server无法启动的4中原因:(先得分析出问题所在) 原文地址:http://www.cnblogs.com/JiangLe/p/4000497.html SQL Server 无法启动的原 ...

  7. 60天shell脚本计划-1/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年1月27日 --修改时间:2021年2月1日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在 ...

  8. 判断访问类型是pc端还是移动端

    /**      * 判断访问类型是电脑还是手机      */     $(function(){         var mobile_flag = isMobile(); // true为PC端 ...

  9. VM虚拟机 Ubuntu配置与ssh连接

    VMware安装ubuntu 自定义 不作更改 选择稍后安装操作系统,相当于裸机,没装系统. 选择ubuntu64 选择虚拟机名字与保存路径 配置情况 2G即可 网络类型,选择NAT 可以了解一下这几 ...

  10. MIPI CSI-2 像素打包格式解析

    背景 MIPI CSI-2支持YUV.RGB和RAW data三种数据格式,这里是个笼统的叫法,具体又根据不同的像素打包方式细分为具体的格式,打包是什么概念?就是把Sensor采样得到的RGB三个通道 ...