MyBatis 从 3.2 版本开始支持插入脚本语言,这允许你插入一种语言驱动,并基于这种语言来编写动态 SQL 查询语句。
可以通过实现以下接口来插入一种语言:
public interface LanguageDriver {
ParameterHandler createParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql);
SqlSource createSqlSource(Configuration configuration, XNode script, Class<?> parameterType);
SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType);
}
实现自定义语言驱动后,你就可以在 mybatis-config.xml
文件中将它设置为默认语言:
<typeAliases>
<typeAlias type="org.sample.MyLanguageDriver" alias="myLanguage"/>
</typeAliases>
<settings>
<setting name="defaultScriptingLanguage" value="myLanguage"/>
</settings>
或者,你也可以使用 lang
属性为特定的语句指定语言:
<select id="selectBlog" lang="myLanguage">
SELECT * FROM BLOG
</select>
或者,在你的 mapper
接口上添加 @Lang
注解:
public interface Mapper {
@Lang(MyLanguageDriver.class)
@Select("SELECT * FROM BLOG")
List<Blog> selectBlog();
}
可以使用 Apache Velocity
作为动态语言,更多细节请参考 MyBatis-Velocity
项目。
你前面看到的所有 xml 标签都由默认 MyBatis 语言提供,而它由语言驱动 org.apache.ibatis.scripting.xmltags.XmlLanguageDriver
(别名为 xml)所提供。
Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部...
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。语法格式如下: %@ directive attribute="value" %指令可...
Swift 字典Swift 字典用来存储无序的相同类型数据的集合,Swift 数组会强制检测元素的类型,如果类型不同则会报错。Swift 字典每...
基准测试Rust支持基准测试来测试用户代码的性能。我们来看一下 src/lib.rs 的性能如何。`#![feature(test)]extern crate test;pu...
本节的内容将提供常用的一些MATLAB命令。在之前的篇章中我们已经知道了MATLAB数值计算和数据可视化是一个交互式程序,在它的命令...
VB有两种Do循环语句,只要或者直到某个条件为真,它们就会重复一系列的语句。只要条件为真,Do…While循环就允许你重复某个操作...
进阶话题1.函数闭包1.1 实例代码function createCountdownTimer(second)local ms = second * 1000--ms为countDown的Upvaluelocal...