All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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