XML 管理 SQL

类似于 MyBatis,通过 xml 文件来管理多行、复杂的 SQL 语句,并提供 if/forEach 等的流程控制。

XML SQL 保存位置

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 类的方法

调用 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)