
com.zlyx.easymybatis.aspect.EasyMybatisAspect Maven / Gradle / Ivy
package com.zlyx.easymybatis.aspect;
import java.lang.reflect.Method;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.AnnotationUtils;
import com.zlyx.easycore.tool.Console;
import com.zlyx.easycore.tool.EasyMap;
import com.zlyx.easycore.tool.Page;
import com.zlyx.easycore.utils.ObjectUtils;
import com.zlyx.easydatabase.abstracts.AbstractAspect;
import com.zlyx.easydatabase.annotations.EasySelect;
import com.zlyx.easydatabase.local.ReturnType;
import com.zlyx.easydatabase.supports.SqlFactory;
import com.zlyx.easymybatis.mybatis.MybatisMapper;
/**
*
* @Auth 赵光
* @Describle
* @2019年1月14日 下午12:27:45
*/
@Aspect
public class EasyMybatisAspect extends AbstractAspect{
public final static String PARSER = "mybatisParser";
@Autowired
private MybatisMapper mybatisMapper;
public Object doAspect(Method method, boolean isPage, String sql, EasyMap paramsMap) {
if(isPage) {
if(method.getReturnType() == Page.class) {
String countSql = sql.replace(sql.substring(sql.indexOf("select")+6, sql.indexOf("from"))," count(*) ");
ReturnType.clear();
Object count = mybatisMapper.selectOne(countSql);
if(ObjectUtils.isEmpty(count) || (Long)count == 0) {
Console.log("No results return!");
return null;
}
ReturnType.setType(method);
List> data = mybatisMapper.page(sql,
paramsMap.get(EasySelect.PAGENUM),
paramsMap.get(EasySelect.PAGSIZE));
return new Page<>(data, (Long)count);
}else {
return mybatisMapper.page(sql,
paramsMap.get(EasySelect.PAGENUM),
paramsMap.get(EasySelect.PAGSIZE));
}
}
return mybatisMapper.select(sql);
}
@Override
public boolean isAspect(Method method) {
return AnnotationUtils.findAnnotation(method.getDeclaringClass(), Mapper.class) != null;
}
@Override
public SqlFactory getFactory() {
return new SqlFactory(PARSER);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy