类似于 MyBatis,通过 xml 文件来管理多行、复杂的 SQL 语句,并提供 if/forEach 等的流程控制。
XML SQL 保存位置写死在classpath*:sql/**/*.xml
,注意要新建一个专属的 sql 目录,文件名不限制,扩展名一定是 xml,例如在
resources/sql
目录下:
下面是一个 XML SQL 的例子:
SELECT * FROM MK_PLAT_PROFITSHARING_CONF WHERE fleet_id = #{fleetid}
其中,属性 id 必填的,用于定位哪一个 SQL。另外#{xxx}
用于获取参数 xxx;${xxx}
用法一样,只是不进行类型转义。
if 逻辑判断。这里复用了 Spring Expression Language(SpEL)表达式解释。注意,大于 > 转义为:gt;小于 < 转义为:lt,而且它们都是大小写不敏感的。使用时中间要以空格分开。
SELECT * FROM mk_order_money m WHERE 1 = 1 AND m.pay_type = #{tranType} ORDER BY m.create_time DESC
转义的示例如下。
调用 Java 类的方法,例子如下
INSERT INTO sys_bookmark (name, content, user_id) VALUES (#{name}, #{content},{T(com.ajaxjs.framework.entity.BaseCRUD).getCurrentUserId()});
Spring Expression Language 可以调用 Java 类方法,包括静态方法和非静态方法。 要调用静态方法,可以使用以下语法:
T(className).methodName(arguments)