![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);
}
private int getQueryCount(Tuple tp) {
String preSql = (String) tp.get(0);
Object[] pms = (Object[]) tp.get(1);
String sql = "select count(*) as totalCount from (" + preSql + ") as tmp";
Record r = baseRepository.queryRecord(sql, pms);
return r == null ? 0 : Integer.valueOf(r.get("totalCount").toString());
}
@Override
public Page queryPage(String sqlResource, int pageNumber, int pageSize, Map params,
Class clz) {
Tuple tp = getQuerySqlAndParams(sqlResource, params);
int totalRow = getQueryCount(tp);
if (totalRow == 0) {
// 空
return new Page();
}
int totalPage = (int) (totalRow / pageSize);
if (totalRow % pageSize != 0) {
totalPage++;
}
int offset = pageSize * (pageNumber - 1);
String preSql = (String) tp.get(0);
Object[] prePms = (Object[]) tp.get(1);
String sql = preSql + " limit ?, ? ";
Object[] pms = new Object[prePms.length + 2];
for (int i = 0; i < prePms.length; ++i) {
pms[i] = prePms[i];
}
pms[prePms.length] = offset;
pms[prePms.length + 1] = pageSize;
List dataList = baseRepository.queryList(sql, clz, pms);
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);
int totalRow = getQueryCount(tp);
int totalPage = (int) (totalRow / pageSize);
if (totalRow % pageSize != 0) {
totalPage++;
}
int offset = pageSize * (pageNumber - 1);
String preSql = (String) tp.get(0);
Object[] prePms = (Object[]) tp.get(1);
String sql = preSql + " limit ?, ? ";
Object[] pms = new Object[prePms.length + 2];
for (int i = 0; i < prePms.length; ++i) {
pms[i] = prePms[i];
}
pms[prePms.length] = offset;
pms[prePms.length + 1] = pageSize;
List dataList = baseRepository.queryRecords(sql, pms);
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, 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