自定义SQL
自定义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参数值自动生成查询条件