diff --git a/src/main/java/org/redkale/annotation/Param.java b/src/main/java/org/redkale/annotation/Param.java new file mode 100644 index 000000000..c5aa917c3 --- /dev/null +++ b/src/main/java/org/redkale/annotation/Param.java @@ -0,0 +1,32 @@ +/* + * + */ +package org.redkale.annotation; + +import java.lang.annotation.Documented; +import static java.lang.annotation.ElementType.PARAMETER; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Target; + +/** + * 参数名注解,编译时加上 -parameters 参数可以不用此注解 + * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + * + * @since 2.8.0 + */ +@Inherited +@Documented +@Target({PARAMETER}) +@Retention(RUNTIME) +public @interface Param { + + String value(); + + String comment() default ""; +} diff --git a/src/main/java/org/redkale/source/DataNativeSqlParser.java b/src/main/java/org/redkale/source/DataNativeSqlParser.java index d8e3da3cd..ec253020d 100644 --- a/src/main/java/org/redkale/source/DataNativeSqlParser.java +++ b/src/main/java/org/redkale/source/DataNativeSqlParser.java @@ -11,10 +11,10 @@ import org.redkale.util.RedkaleClassLoader; /** * * 原生的sql解析器
- * 参数变量有三种方式:
- * #{xx.xx}: 用于拼接sql的变量, 变量值必需的 - * ${xx.xx}: 用于预编译的sql的参数变量 - * $${xx.xx}: 用于预编译的sql的参数变量, 变量值必需的 + * 参数变量有三种方式(与Mybatis的占位符类似):
+ * ${xx.xx}: 用于直接拼接sql的变量,不做任何转义, 变量值必需的 + * #{xx.xx}: 用于预编译的sql的参数变量 + * ##{xx.xx}: 用于预编译的sql的参数变量, 变量值必需的 * *

* 详情见: https://redkale.org diff --git a/src/main/java/org/redkale/source/DataNativeSqlStatement.java b/src/main/java/org/redkale/source/DataNativeSqlStatement.java index 629ece20e..1f3952d7f 100644 --- a/src/main/java/org/redkale/source/DataNativeSqlStatement.java +++ b/src/main/java/org/redkale/source/DataNativeSqlStatement.java @@ -42,7 +42,7 @@ public class DataNativeSqlStatement { //根据参数值集合重新生成的带?参数可执行的计算总数sql,用于返回Sheet对象 protected String nativeCountSql; - //需要预编译的$${xxx}、${xxx}参数名, 数量与sql中的?数量一致 + //需要预编译的##{xxx}、#{xxx}参数名, 数量与sql中的?数量一致 protected List paramNames; //需要预编译的jdbc参数名, 数量与sql中的?数量一致 diff --git a/src/test/java/org/redkale/test/source/parser/ForumInfoMapper.java b/src/test/java/org/redkale/test/source/parser/ForumInfoMapper.java index c1ea3e268..28a77c5f6 100644 --- a/src/test/java/org/redkale/test/source/parser/ForumInfoMapper.java +++ b/src/test/java/org/redkale/test/source/parser/ForumInfoMapper.java @@ -16,28 +16,28 @@ public interface ForumInfoMapper extends BaseMapper { @Sql("SELECT f.forum_groupid, s.forum_section_color " + "FROM forum_info f, forum_section s " + " WHERE f.forumid = s.forumid AND " - + "s.forum_sectionid = ${bean.forumSectionid} AND " - + "f.forumid = ${bean.forumid} AND s.forum_section_color = ${bean.forumSectionColor}") + + "s.forum_sectionid = #{bean.forumSectionid} AND " + + "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}") public ForumResult findForumResult(ForumBean bean); @Sql("SELECT f.forum_groupid, s.forum_section_color " + "FROM forum_info f, forum_section s " + " WHERE f.forumid = s.forumid AND " - + "s.forum_sectionid = ${bean.forumSectionid} AND " - + "f.forumid = ${bean.forumid} AND s.forum_section_color = ${bean.forumSectionColor}") + + "s.forum_sectionid = #{bean.forumSectionid} AND " + + "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}") public CompletableFuture findForumResultAsync(ForumBean bean); @Sql("SELECT f.forum_groupid, s.forum_section_color " + "FROM forum_info f, forum_section s " + " WHERE f.forumid = s.forumid AND " - + "s.forum_sectionid = ${bean.forumSectionid} AND " - + "f.forumid = ${bean.forumid} AND s.forum_section_color = ${bean.forumSectionColor}") + + "s.forum_sectionid = #{bean.forumSectionid} AND " + + "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}") public List queryForumResult(ForumBean bean); @Sql("SELECT f.forum_groupid, s.forum_section_color " + "FROM forum_info f, forum_section s " + " WHERE f.forumid = s.forumid AND " - + "s.forum_sectionid = ${bean.forumSectionid} AND " - + "f.forumid = ${bean.forumid} AND s.forum_section_color = ${bean.forumSectionColor}") + + "s.forum_sectionid = #{bean.forumSectionid} AND " + + "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}") public CompletableFuture> queryForumResultAsync(ForumBean bean); }