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

com.yuweix.kuafu.dao.mybatis.AbstractDao Maven / Gradle / Ivy

The newest version!
package com.yuweix.kuafu.dao.mybatis;


import com.yuweix.kuafu.dao.mybatis.order.OrderBy;
import com.yuweix.kuafu.dao.mybatis.where.Criteria;
import com.yuweix.kuafu.sharding.annotation.Shard;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;


/**
 * @author yuwei
 */
public abstract class AbstractDao implements Dao {
	protected Class clz;


	@SuppressWarnings("unchecked")
	public AbstractDao() {
		this.clz = null;
		Type t = getClass().getGenericSuperclass();
		if (t instanceof ParameterizedType) {
			this.clz = (Class) ((ParameterizedType) t).getActualTypeArguments()[0];
		}
	}
	
	protected abstract BaseMapper getMapper();

	@Override
	public Class getPersistClz() {
		return clz;
	}

	@Override
	public T get(PK id) {
		return getMapper().selectOneById(id, clz);
	}

	@Override
	public T get(@Shard Object shardingVal, PK id) {
		return getMapper().selectOneById(id, clz);
	}

	@Override
	public int findCount(Criteria criteria) {
		return getMapper().findCount(criteria, clz);
	}

	@Override
	public List findList(Criteria criteria, OrderBy orderBy) {
		return getMapper().findList(criteria, orderBy, clz);
	}

	@Override
	public List findPageList(Criteria criteria, int pageNo, int pageSize, OrderBy orderBy) {
		return getMapper().findPageList(criteria, pageNo, pageSize, orderBy, clz);
	}

	@Override
	public int insert(@Shard T t) {
		return getMapper().insert(t);
	}

	@Override
	public int insertSelective(@Shard T t) {
		return getMapper().insertSelective(t);
	}

	@Override
	public int updateByPrimaryKey(@Shard T t) {
		return getMapper().updateByPrimaryKey(t);
	}

	@Override
	public int updateByPrimaryKeyExcludeVersion(@Shard T t) {
		return getMapper().updateByPrimaryKeyExcludeVersion(t);
	}

	@Override
	public int updateByPrimaryKeySelective(@Shard T t) {
		return getMapper().updateByPrimaryKeySelective(t);
	}

	@Override
	public int updateByPrimaryKeySelectiveExcludeVersion(@Shard T t) {
		return getMapper().updateByPrimaryKeySelectiveExcludeVersion(t);
	}

	@Override
	public int delete(@Shard T t) {
		return getMapper().delete(t);
	}

	@Override
	public int deleteByKey(PK id) {
		return getMapper().deleteByKey(id, clz);
	}

	@Override
	public int deleteByKey(@Shard Object shardingVal, PK id) {
		return getMapper().deleteByKey(id, clz);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy