DataSqlMapper优化
This commit is contained in:
@@ -10,7 +10,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 原始sql语句
|
||||
* 原始sql语句, 标记在{@link org.redkale.source.DataSqlMapper}方法上
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
|
||||
@@ -22,10 +22,43 @@ import org.redkale.util.Sheet;
|
||||
* void/基本数据类型/JavaBean/Map/List/Sheet <br>
|
||||
* 异步接口返回的是泛型为以上类型的CompletableFuture
|
||||
*
|
||||
* <blockquote><pre>
|
||||
* 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);
|
||||
*}
|
||||
* </pre></blockquote>
|
||||
* <p>
|
||||
* 详情见: https://redkale.org
|
||||
*
|
||||
* @see org.redkale.source.spi.DataSqlMapperBuilder
|
||||
* @see org.redkale.persistence.Sql
|
||||
*
|
||||
* @author zhangjx
|
||||
* @param <T> T
|
||||
|
||||
@@ -68,6 +68,7 @@ public interface DataSqlSource extends DataSource {
|
||||
*
|
||||
* @return 执行条数
|
||||
*/
|
||||
@ClassDepends
|
||||
public int nativeUpdate(String sql, Map<String, Object> params);
|
||||
|
||||
/**
|
||||
@@ -78,6 +79,7 @@ public interface DataSqlSource extends DataSource {
|
||||
*
|
||||
* @return 执行条数
|
||||
*/
|
||||
@ClassDepends
|
||||
public CompletableFuture<Integer> nativeUpdateAsync(String sql, Map<String, Object> params);
|
||||
|
||||
/**
|
||||
|
||||
@@ -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<AsmMethodParam> methodParams = methodBean.getParams();
|
||||
List<Integer> 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);
|
||||
|
||||
@@ -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<ForumInfo> {
|
||||
+ " 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(ForumBean bean);
|
||||
public CompletableFuture<List<ForumResult>> queryForumResultAsync(@Param("bean") ForumBean bean0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user