org.beetl.sql.mapper.MapperInvoke Maven / Gradle / Ivy
The newest version!
package org.beetl.sql.mapper;
import org.beetl.sql.core.SQLManager;
import java.lang.reflect.Method;
/**
* mapper中的每个方法都会对应一个MapperInvoke类
* 如下java包中提供各种实现
*
* - internal:自带的实现,如简单的CRUD,{@code BaseMapper} 使用了这个包下
* 所有代码,比如insert,updateById,deleteById,all,templateOne
*
* - ready:注解提供jdbc sql语句
*
{@code
* @Sql("update user set status=? where id=?")
* public int updateUser(int status,int id);
* }
*
*
* - template:注解提供sql模板语句语句
*
{@code
* @TemplateSql("update user set status=#status# where id=#id#")
* public int updateUser(int id,int status);
* }
*
*
* - identity:sql文件提供sql语句
*
{@code
* // 寻找markdown里标题为updateUser的sql语句
* public int updateUser(int id,int status);
*
* }
*
* - springdata:一种类似springdata方式的实现,系统扩展
*
{@code
* // springData风格,根据方法名自动拼写出sql语句
* public int updateUserStatusById(int id,int status);
* }
*
* - provider:指定类实现sql语句,是系统扩展
*
{@code
* @SqlProvider(XXX.class)
* public int updateUserStatusById(int id,int status);
* }
*
*
*
* MapperInvoke实现类应该是单例和线程安全,可以通过{@code @Builder}注解来扩展新的注解,参考{@Link SpringData}
* @author xiandafu
*/
public abstract class MapperInvoke {
/**
*
* @param sm
* @param entityClass 此方法所在的mapper的映射类,通常是方法不能确定映射类型时候,采用
* @param m
* @param args
* @return
*/
public abstract Object call(SQLManager sm, Class entityClass, Method m, Object[] args);
}