
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