diff --git a/src/main/java/org/redkale/persistence/Sql.java b/src/main/java/org/redkale/persistence/Sql.java
index 01bcdf7b6..4ce849980 100644
--- a/src/main/java/org/redkale/persistence/Sql.java
+++ b/src/main/java/org/redkale/persistence/Sql.java
@@ -10,7 +10,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
- * 原始sql语句
+ * 原始sql语句, 标记在{@link org.redkale.source.DataSqlMapper}方法上
*
*
*
diff --git a/src/main/java/org/redkale/source/DataSqlMapper.java b/src/main/java/org/redkale/source/DataSqlMapper.java
index 6e928dd31..70a71dc9d 100644
--- a/src/main/java/org/redkale/source/DataSqlMapper.java
+++ b/src/main/java/org/redkale/source/DataSqlMapper.java
@@ -22,10 +22,43 @@ import org.redkale.util.Sheet;
* void/基本数据类型/JavaBean/Map/List/Sheet
* 异步接口返回的是泛型为以上类型的CompletableFuture
*
+ *
+ * public interface ForumInfoMapper extends BaseMapper<ForumInfo> {
+ *
+ * @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}")
+ * 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}")
+ * public CompletableFuture<ForumResult> 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}")
+ * public List<ForumResult> 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}")
+ * public CompletableFuture<List<ForumResult>> queryForumResultAsync(@Param("bean") ForumBean bean0);
+ *}
+ *
*
* 详情见: https://redkale.org
*
* @see org.redkale.source.spi.DataSqlMapperBuilder
+ * @see org.redkale.persistence.Sql
*
* @author zhangjx
* @param T
diff --git a/src/main/java/org/redkale/source/DataSqlSource.java b/src/main/java/org/redkale/source/DataSqlSource.java
index dca65c5eb..c440fc687 100644
--- a/src/main/java/org/redkale/source/DataSqlSource.java
+++ b/src/main/java/org/redkale/source/DataSqlSource.java
@@ -68,6 +68,7 @@ public interface DataSqlSource extends DataSource {
*
* @return 执行条数
*/
+ @ClassDepends
public int nativeUpdate(String sql, Map params);
/**
@@ -78,6 +79,7 @@ public interface DataSqlSource extends DataSource {
*
* @return 执行条数
*/
+ @ClassDepends
public CompletableFuture nativeUpdateAsync(String sql, Map params);
/**
diff --git a/src/main/java/org/redkale/source/spi/DataSqlMapperBuilder.java b/src/main/java/org/redkale/source/spi/DataSqlMapperBuilder.java
index 1fd6ac606..2998e2683 100644
--- a/src/main/java/org/redkale/source/spi/DataSqlMapperBuilder.java
+++ b/src/main/java/org/redkale/source/spi/DataSqlMapperBuilder.java
@@ -6,12 +6,14 @@ package org.redkale.source.spi;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.lang.reflect.Parameter;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.IntFunction;
+import org.redkale.annotation.Param;
import org.redkale.asm.AsmMethodBean;
import org.redkale.asm.AsmMethodBoost;
import org.redkale.asm.AsmMethodParam;
@@ -217,13 +219,14 @@ public final class DataSqlMapperBuilder {
Class resultClass = resultClass(method);
Class[] componentTypes = resultComponentType(method);
final boolean async = method.getReturnType().isAssignableFrom(CompletableFuture.class);
+ Parameter[] params = method.getParameters();
Class[] paramTypes = method.getParameterTypes();
List methodParams = methodBean.getParams();
List insns = new ArrayList<>();
if (!EntityBuilder.isSimpleType(componentTypes[0])) {
EntityBuilder.load(componentTypes[0]);
}
-
+
mv = new MethodDebugVisitor(cw.visitMethod(ACC_PUBLIC, method.getName(), methodBean.getDesc(), methodBean.getSignature(), null)).setDebug(false);
Label l0 = new Label();
mv.visitLabel(l0);
@@ -252,7 +255,9 @@ public final class DataSqlMapperBuilder {
//参数名
mv.visitInsn(DUP);
Asms.visitInsn(mv, i * 2);
- mv.visitLdcInsn(methodParams.get(i).getName());
+ Param p = params[i].getAnnotation(Param.class);
+ String k = p == null ? methodParams.get(i).getName() : p.value();
+ mv.visitLdcInsn(k);
mv.visitInsn(AASTORE);
//参数值
mv.visitInsn(DUP);
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 28a77c5f6..51782539e 100644
--- a/src/test/java/org/redkale/test/source/parser/ForumInfoMapper.java
+++ b/src/test/java/org/redkale/test/source/parser/ForumInfoMapper.java
@@ -5,6 +5,7 @@ package org.redkale.test.source.parser;
import java.util.List;
import java.util.concurrent.CompletableFuture;
+import org.redkale.annotation.Param;
import org.redkale.persistence.Sql;
/**
@@ -39,5 +40,5 @@ public interface ForumInfoMapper extends BaseMapper {
+ " WHERE f.forumid = s.forumid AND "
+ "s.forum_sectionid = #{bean.forumSectionid} AND "
+ "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}")
- public CompletableFuture> queryForumResultAsync(ForumBean bean);
+ public CompletableFuture> queryForumResultAsync(@Param("bean") ForumBean bean0);
}