![JAR search and dependency download from the Maven repository](/logo.png)
cn.sylinx.hbatis.ext.mirage.repository.DaoServiceImpl Maven / Gradle / Ivy
package cn.sylinx.hbatis.ext.mirage.repository;
import java.util.List;
import java.util.Map;
import cn.sylinx.hbatis.db.common.Page;
import cn.sylinx.hbatis.db.common.Record;
import cn.sylinx.hbatis.ext.common.BaseConst;
import cn.sylinx.hbatis.ext.common.repository.CommonDaoServiceImpl;
import cn.sylinx.hbatis.ext.parse.SqlParser;
import cn.sylinx.hbatis.ext.res.ClasspathSqlResource;
import cn.sylinx.hbatis.kit.Tuple;
public class DaoServiceImpl extends CommonDaoServiceImpl implements DaoService {
private BaseRepository baseRepository;
public DaoServiceImpl() {
}
public DaoServiceImpl(BaseRepository baseRepository) {
super(baseRepository);
this.baseRepository = baseRepository;
}
public BaseRepository getBaseRepository() {
return baseRepository;
}
public void setBaseRepository(BaseRepository baseRepository) {
this.baseRepository = baseRepository;
}
private ClasspathSqlResource createClasspathSqlResource(String sqlResource) {
ClasspathSqlResource resource = new ClasspathSqlResource(sqlResource);
resource.setStatementHandler(getStatementHandler());
return resource;
}
@Override
public Object updateWithReturnPk(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return updateWithReturnPk(resource, params);
}
@Override
public Object updateWithReturnPk(ClasspathSqlResource resource, Map params) {
return baseRepository.updateWithReturnPk(resource, params);
}
@Override
public boolean execute(String sqlResource) {
return execute(sqlResource, null);
}
@Override
public boolean execute(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return execute(resource, params);
}
@Override
public boolean execute(ClasspathSqlResource resource, Map params) {
return baseRepository.execute(resource, params);
}
@Override
public int update(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return update(resource, params);
}
@Override
public int update(ClasspathSqlResource resource, Map params) {
return baseRepository.update(resource, params);
}
@Override
public int update(String sqlResource) {
return update(sqlResource, null);
}
@Override
public int delete(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return delete(resource, params);
}
@Override
public int delete(ClasspathSqlResource resource, Map params) {
return baseRepository.delete(resource, params);
}
@Override
public int delete(String sqlResource) {
return delete(sqlResource, null);
}
@Override
public List queryList(String sqlResource, Map params, Class clz) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryList(resource, params, clz);
}
@Override
public List queryList(ClasspathSqlResource resource, Map params, Class clz) {
return baseRepository.queryList(resource, params, clz);
}
@Override
public T queryFirst(String sqlResource, Map params, Class clz) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryFirst(resource, params, clz);
}
@Override
public T queryFirst(ClasspathSqlResource resource, Map params, Class clz) {
return baseRepository.queryFirst(resource, params, clz);
}
@Override
public Record queryRecord(ClasspathSqlResource resource, Map params) {
return baseRepository.queryRecord(resource, params);
}
@Override
public List queryList(String sqlResource, Class clz) {
return queryList(sqlResource, null, clz);
}
@Override
public T queryFirst(String sqlResource, Class clz) {
return queryFirst(sqlResource, null, clz);
}
@Override
public Record queryRecord(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryRecord(resource, params);
}
@Override
public Record queryRecord(String sqlResource) {
return queryRecord(sqlResource, null);
}
@Override
public List queryRecords(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryRecords(resource, params);
}
@Override
public List queryRecords(ClasspathSqlResource resource, Map params) {
return baseRepository.queryRecords(resource, params);
}
@Override
public List queryRecords(String sqlResource) {
return queryRecords(sqlResource, null);
}
private Tuple getQuerySqlAndParams(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return SqlParser.parseSql(resource, params);
}
@Override
public Page queryPage(String sqlResource, int pageNumber, int pageSize, Map params,
Class clz) {
Tuple tp = getQuerySqlAndParams(sqlResource, params);
String preSql = (String) tp.get(0);
Object[] prePms = (Object[]) tp.get(1);
Tuple t = getDialect().getSqlBuilder().buildPaginatorSql(preSql, pageNumber, pageSize);
String sqlCount = t.getObject(0);
Record r = baseRepository.queryRecord(sqlCount, prePms);
int totalRow = r == null ? 0 : Integer.valueOf(r.get("totalCount").toString());
if (totalRow == 0) {
// 空
Page emptyPage = new Page();
emptyPage.setPageSize(pageSize);
return emptyPage;
}
int totalPage = (int) (totalRow / pageSize);
if (totalRow % pageSize != 0) {
totalPage++;
}
String sqlLimit = t.getObject(1);
Object[] pms = t.getObject(2);
int paramSize = prePms == null ? 0 : prePms.length;
int pageParamSize = pms == null ? 0 : pms.length;
int finalParamSize = paramSize + pageParamSize;
Object[] finalParams = new Object[finalParamSize];
// 查询参数
if (paramSize > 0) {
for (int i = 0; i < paramSize; ++i) {
finalParams[i] = prePms[i];
}
}
// 分页参数
if (pageParamSize > 0) {
for (int i = 0; i < pageParamSize; ++i) {
finalParams[i + paramSize] = pms[i];
}
}
List dataList = baseRepository.queryList(sqlLimit, clz, finalParams);
Page page = new Page(dataList, pageNumber, pageSize, totalPage, totalRow);
return page;
}
@Override
public Page queryPage(String sqlResource, int pageNumber, Map params, Class clz) {
return queryPage(sqlResource, pageNumber, BaseConst.DEFAULT_PAGE_SIZE_16, params, clz);
}
@Override
public Page queryPage(String sqlResource, int pageNumber, Class clz) {
return queryPage(sqlResource, pageNumber, null, clz);
}
@Override
public Page queryPage(String sqlResource, int pageNumber, int pageSize, Class clz) {
return queryPage(sqlResource, pageNumber, pageSize, null, clz);
}
@Override
public Page queryPageRecords(String sqlResource, int pageNumber, int pageSize, Map params) {
Tuple tp = getQuerySqlAndParams(sqlResource, params);
String preSql = (String) tp.get(0);
Object[] prePms = (Object[]) tp.get(1);
Tuple t = getDialect().getSqlBuilder().buildPaginatorSql(preSql, pageNumber, pageSize);
String sqlCount = t.getObject(0);
Record r = baseRepository.queryRecord(sqlCount, prePms);
int totalRow = r == null ? 0 : Integer.valueOf(r.get("totalCount").toString());
if (totalRow == 0) {
// 空
Page emptyPage = new Page();
emptyPage.setPageSize(pageSize);
return emptyPage;
}
int totalPage = (int) (totalRow / pageSize);
if (totalRow % pageSize != 0) {
totalPage++;
}
String sqlLimit = t.getObject(1);
Object[] pms = t.getObject(2);
int paramSize = prePms == null ? 0 : prePms.length;
int pageParamSize = pms == null ? 0 : pms.length;
int finalParamSize = paramSize + pageParamSize;
Object[] finalParams = new Object[finalParamSize];
// 查询参数
if (paramSize > 0) {
for (int i = 0; i < paramSize; ++i) {
finalParams[i] = prePms[i];
}
}
// 分页参数
if (pageParamSize > 0) {
for (int i = 0; i < pageParamSize; ++i) {
finalParams[i + paramSize] = pms[i];
}
}
List dataList = baseRepository.queryRecords(sqlLimit, finalParams);
Page page = new Page(dataList, pageNumber, pageSize, totalPage, totalRow);
return page;
}
@Override
public Page queryPageRecords(String sqlResource, int pageNumber, Map params) {
return queryPageRecords(sqlResource, pageNumber, BaseConst.DEFAULT_PAGE_SIZE_16, params);
}
@Override
public Page queryPageRecords(String sqlResource, int pageNumber) {
return queryPageRecords(sqlResource, pageNumber, null);
}
@Override
public Page queryPageRecords(String sqlResource, int pageNumber, int pageSize) {
return queryPageRecords(sqlResource, pageNumber, pageSize, (Map) null);
}
@Override
public List queryListWithCache(String sqlResource, Map params, Class clz) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryListWithCache(resource, params, clz);
}
@Override
public List queryListWithCache(ClasspathSqlResource resource, Map params, Class clz) {
return baseRepository.queryListWithCache(resource, params, clz);
}
@Override
public T queryFirstWithCache(String sqlResource, Map params, Class clz) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryFirstWithCache(resource, params, clz);
}
@Override
public T queryFirstWithCache(ClasspathSqlResource resource, Map params, Class clz) {
return baseRepository.queryFirstWithCache(resource, params, clz);
}
@Override
public List queryListWithCache(String sqlResource, Class clz) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return baseRepository.queryListWithCache(resource, clz);
}
@Override
public T queryFirstWithCache(String sqlResource, Class clz) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return baseRepository.queryFirstWithCache(resource, clz);
}
@Override
public Record queryRecordWithCache(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryRecordWithCache(resource, params);
}
@Override
public Record queryRecordWithCache(ClasspathSqlResource resource, Map params) {
return baseRepository.queryRecordWithCache(resource, params);
}
@Override
public Record queryRecordWithCache(String sqlResource) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return baseRepository.queryRecordWithCache(resource);
}
@Override
public List queryRecordsWithCache(String sqlResource, Map params) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return queryRecordsWithCache(resource, params);
}
@Override
public List queryRecordsWithCache(ClasspathSqlResource resource, Map params) {
return baseRepository.queryRecordsWithCache(resource, params);
}
@Override
public List queryRecordsWithCache(String sqlResource) {
ClasspathSqlResource resource = createClasspathSqlResource(sqlResource);
return baseRepository.queryRecordsWithCache(resource);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy