自定义SQL

最后更新:2024-09-30 16:52:05 | 状态:未完成

自定义SQL分两种场景:

1.可以直接写在Java中[源码参考]

如:service.execute("UPDATE A LEFT JOIN B ON A.B_ID=B.ID SET A.B_NAME =B.NAME WHERE ....各种条件","占位条件");

service.querys("SELECT * FROM HR_USER WHERE TYPE_ID IN(:TYPE_ID)", condition("HTTP参数").and("后台参数"));


2.如果SQL很复杂可以在XML中定义 [源码参考]

SQL文件的根目录通过anyline-config.xml指定 <property key="SQL_STORE_DIR">/WEB-INF/classes/sql</property>

有多个目录的以,分隔
目录支持两个变量

classpath 表示当前项目的classes目录,而不是jre目录

libpath 表示当前项目lib目录
注意如果在spring配置文件中不要用${classpath}和${libpath} 因为spring会把${classpath}解析成jre的目录,而${libpath}会找不到相关变量

所以要用{classpath}和{libpath}

SQL主体与查询条件支持两种格式的变量标识,参考 SQL中的变量及占位符格式

注意以:与{}不可以混用


点位符赋值一般以key-value的格式执行,
service.querys("SELECT * FROM USER WHERE ID = :ID", "ID:1") 
但有些情况SQL中设置了好占位符,就没有key了 需要用ConfigStore提供占位值
service.querys("SELECT * FROM USER WHERE ID = ? OR ID = ?", new DefaultConfigStore().params("1","2"))

如果是mybatis格式的SQL,只支持解析SQL体。查询条件会被忽略,通过是根据JAVA参数值自动生成查询条件

相关分类
首页 最近更新 搜索 提交 回复