DataSqlMapper优化
This commit is contained in:
@@ -10,7 +10,7 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 原始sql语句
|
* 原始sql语句, 标记在{@link org.redkale.source.DataSqlMapper}方法上
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -22,10 +22,43 @@ import org.redkale.util.Sheet;
|
|||||||
* void/基本数据类型/JavaBean/Map/List/Sheet <br>
|
* void/基本数据类型/JavaBean/Map/List/Sheet <br>
|
||||||
* 异步接口返回的是泛型为以上类型的CompletableFuture
|
* 异步接口返回的是泛型为以上类型的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>
|
* <p>
|
||||||
* 详情见: https://redkale.org
|
* 详情见: https://redkale.org
|
||||||
*
|
*
|
||||||
* @see org.redkale.source.spi.DataSqlMapperBuilder
|
* @see org.redkale.source.spi.DataSqlMapperBuilder
|
||||||
|
* @see org.redkale.persistence.Sql
|
||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
* @param <T> T
|
* @param <T> T
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ public interface DataSqlSource extends DataSource {
|
|||||||
*
|
*
|
||||||
* @return 执行条数
|
* @return 执行条数
|
||||||
*/
|
*/
|
||||||
|
@ClassDepends
|
||||||
public int nativeUpdate(String sql, Map<String, Object> params);
|
public int nativeUpdate(String sql, Map<String, Object> params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,6 +79,7 @@ public interface DataSqlSource extends DataSource {
|
|||||||
*
|
*
|
||||||
* @return 执行条数
|
* @return 执行条数
|
||||||
*/
|
*/
|
||||||
|
@ClassDepends
|
||||||
public CompletableFuture<Integer> nativeUpdateAsync(String sql, Map<String, Object> params);
|
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.Field;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.lang.reflect.Parameter;
|
||||||
import java.lang.reflect.ParameterizedType;
|
import java.lang.reflect.ParameterizedType;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.function.IntFunction;
|
import java.util.function.IntFunction;
|
||||||
|
import org.redkale.annotation.Param;
|
||||||
import org.redkale.asm.AsmMethodBean;
|
import org.redkale.asm.AsmMethodBean;
|
||||||
import org.redkale.asm.AsmMethodBoost;
|
import org.redkale.asm.AsmMethodBoost;
|
||||||
import org.redkale.asm.AsmMethodParam;
|
import org.redkale.asm.AsmMethodParam;
|
||||||
@@ -217,6 +219,7 @@ public final class DataSqlMapperBuilder {
|
|||||||
Class resultClass = resultClass(method);
|
Class resultClass = resultClass(method);
|
||||||
Class[] componentTypes = resultComponentType(method);
|
Class[] componentTypes = resultComponentType(method);
|
||||||
final boolean async = method.getReturnType().isAssignableFrom(CompletableFuture.class);
|
final boolean async = method.getReturnType().isAssignableFrom(CompletableFuture.class);
|
||||||
|
Parameter[] params = method.getParameters();
|
||||||
Class[] paramTypes = method.getParameterTypes();
|
Class[] paramTypes = method.getParameterTypes();
|
||||||
List<AsmMethodParam> methodParams = methodBean.getParams();
|
List<AsmMethodParam> methodParams = methodBean.getParams();
|
||||||
List<Integer> insns = new ArrayList<>();
|
List<Integer> insns = new ArrayList<>();
|
||||||
@@ -252,7 +255,9 @@ public final class DataSqlMapperBuilder {
|
|||||||
//参数名
|
//参数名
|
||||||
mv.visitInsn(DUP);
|
mv.visitInsn(DUP);
|
||||||
Asms.visitInsn(mv, i * 2);
|
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(AASTORE);
|
||||||
//参数值
|
//参数值
|
||||||
mv.visitInsn(DUP);
|
mv.visitInsn(DUP);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package org.redkale.test.source.parser;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import org.redkale.annotation.Param;
|
||||||
import org.redkale.persistence.Sql;
|
import org.redkale.persistence.Sql;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,5 +40,5 @@ public interface ForumInfoMapper extends BaseMapper<ForumInfo> {
|
|||||||
+ " WHERE f.forumid = s.forumid AND "
|
+ " WHERE f.forumid = s.forumid AND "
|
||||||
+ "s.forum_sectionid = #{bean.forumSectionid} AND "
|
+ "s.forum_sectionid = #{bean.forumSectionid} AND "
|
||||||
+ "f.forumid = #{bean.forumid} AND s.forum_section_color = #{bean.forumSectionColor}")
|
+ "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