Mybatis mapper文件占位符设置默认值
2024-09-02 06:10:04
如果要设置占位符默认值的话:需要进行 设置
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属性值,否则将直接返回空字符串("")。
最新文章
- [转]DataURL与File,Blob,canvas对象之间的互相转换的Javascript
- Setup Factory Error3014
- iOS学习之Object-C语言简单的通讯录管理系统
- [Javascript] Lodash: Refactoring Simple For Loops (_.find, _.findLast, _.filter)
- maven+springmvc+easyui+fastjson+pagehelper
- Node.js笔记1
- hrbustoj 2013 Play Game 2(博弈)
- 09 Linear Regression
- RAID RAID 大揭秘~
- 201521123072《Java程序设计》第1周学习总结
- iOS开发经验总结
- jQuery的鼠标事件总结
- springboot项目利用devtools实现热部署,改动代码自动生效
- 正则表达式在Java中的使用
- python的学习笔记01_3 基本运算符 流程控制if while 字符串常用办法
- 使用re开发python计算器
- 5N - 考试排名
- Java——类和对象
- c#大文件的拷贝
- Alpha 冲刺 (10/10)