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

org.tinygroup.jdbctemplatedslsession.template.DslTemplateImpl Maven / Gradle / Ivy

package org.tinygroup.jdbctemplatedslsession.template;

import java.io.Serializable;
import java.util.List;

import org.tinygroup.commons.tools.CollectionUtil;
import org.tinygroup.jdbctemplatedslsession.callback.DeleteGenerateCallback;
import org.tinygroup.jdbctemplatedslsession.callback.InsertGenerateCallback;
import org.tinygroup.jdbctemplatedslsession.callback.NoParamDeleteGenerateCallback;
import org.tinygroup.jdbctemplatedslsession.callback.NoParamInsertGenerateCallback;
import org.tinygroup.jdbctemplatedslsession.callback.NoParamUpdateGenerateCallback;
import org.tinygroup.jdbctemplatedslsession.callback.SelectGenerateCallback;
import org.tinygroup.jdbctemplatedslsession.callback.UpdateGenerateCallback;
import org.tinygroup.tinysqldsl.Delete;
import org.tinygroup.tinysqldsl.DslSession;
import org.tinygroup.tinysqldsl.Insert;
import org.tinygroup.tinysqldsl.Pager;
import org.tinygroup.tinysqldsl.Select;
import org.tinygroup.tinysqldsl.Update;

/**
 * dsl模板实现类
 * @author renhui
 *
 */
public class DslTemplateImpl extends DslAccessor implements DslTemplate{
	
	public DslTemplateImpl() {
		super();
	}
	
	public DslTemplateImpl(DslSession dslSession) {
		setDslSession(dslSession);
		afterPropertiesSet();
	}

	public  T insert(T t, InsertGenerateCallback callback) {
		Insert insert=callback.generate(t);
		dslSession.execute(insert);
		return t; 
	}
	
	@SuppressWarnings("unchecked")
	public  T insertAndReturnKey(T t,
			InsertGenerateCallback callback) {
		Insert insert=callback.generate(t);
		boolean autoGeneratedKeys=insert.getContext().getTable().isAutoGeneratedKeys();
		return (T) dslSession.executeAndReturnObject(insert, t.getClass(), autoGeneratedKeys);
	}

	@SuppressWarnings("unchecked")
	public  T insertAndReturnKey(boolean autoGeneratedKeys, T t,
			InsertGenerateCallback callback) {
		Insert insert=callback.generate(t);
		return (T) dslSession.executeAndReturnObject(insert, t.getClass(), autoGeneratedKeys);
	}

	public  int update(T t, UpdateGenerateCallback callback, boolean ignore) {
		Update update=callback.generate(t);
		return dslSession.execute(update,ignore);
	}
	
	public  int update(T t, UpdateGenerateCallback callback) {
		return update(t, callback, true);
	}

	public int deleteByKey(Serializable pk, DeleteGenerateCallback callback) {
		Delete delete=callback.generate(pk);
		return dslSession.execute(delete);
	}

	@SuppressWarnings("rawtypes")
	public  T getByKey(Serializable pk, Class requiredType,SelectGenerateCallback callback) {
		Select select=callback.generate(pk);
		return dslSession.fetchOneResult(select, requiredType);
	}

	public int deleteByKeys(DeleteGenerateCallback callback,
			Serializable... pks) {
		Delete delete=callback.generate(pks);
		return dslSession.execute(delete);
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public  List query(T t, SelectGenerateCallback callback) {
		Select select=callback.generate(t);
		Class requiredType=(Class) t.getClass();
		return  dslSession.fetchList(select,requiredType);
	}

	@SuppressWarnings({"rawtypes" })
	public  Pager queryPager(int start, int limit, T t,boolean isCursor,
			SelectGenerateCallback callback) {
		Select select=callback.generate(t);
		Class requiredType = requiredType(t);
		return dslSession.fetchPage(select, start, limit, false, requiredType);
	}
	
	@SuppressWarnings("unchecked")
	private  Class requiredType(T t) {
		Class requiredType=(Class) t.getClass();
		return requiredType;
	}

	public  int[] batchInsert(List objs, NoParamInsertGenerateCallback callback) {
		if (CollectionUtil.isEmpty(objs)) {
			return new int[0];
		}
		Insert insert=callback.generate();
		boolean autoGeneratedKeys=insert.getContext().getTable().isAutoGeneratedKeys();
		Class requiredType = requiredType(objs.get(0));
		return dslSession.batchInsert(insert, requiredType, objs, Integer.MAX_VALUE,autoGeneratedKeys);
	}

	public  int[] batchInsert(boolean autoGeneratedKeys, List objs,
			NoParamInsertGenerateCallback callback) {
		if (CollectionUtil.isEmpty(objs)) {
			return new int[0];
		}
		Insert insert=callback.generate();
		Class requiredType = requiredType(objs.get(0));
		return dslSession.batchInsert(insert, requiredType, objs, Integer.MAX_VALUE,autoGeneratedKeys);
	}

	public  int[] batchUpdate(List objs, NoParamUpdateGenerateCallback callback) {
		if (CollectionUtil.isEmpty(objs)) {
			return new int[0];
		}
		Update update=callback.generate();
		Class requiredType = requiredType(objs.get(0));
		return dslSession.batchUpdate(update, requiredType, objs);
	}

	public  int[] batchDelete(List objs, NoParamDeleteGenerateCallback callback) {
		if (CollectionUtil.isEmpty(objs)) {
			return new int[0];
		}
		Delete delete=callback.generate();
		Class requiredType = requiredType(objs.get(0));
		return dslSession.batchDelete(delete, requiredType, objs);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy