- SSM 封装base(一) 实现了简单的增删查改,此篇会加上分页功能
首先是 service层 的实现类
@Service
public abstract class BaseService<T> implements IBaseService<T>{
public abstract IBaseDao<T> getBaseDao();
public abstract Class<T> getClasss();
public Class<T> clsss;
{
clsss = getClasss();
}
@Override
public Page<T> queryByPage(Page<T> page) {
String tableName = clsss.getSimpleName().toLowerCase();
List<T> list = new ArrayList<>();
List<HashMap<Object, Object>> listmap = getBaseDao().queryByPage( tableName,
(page.getPage()-1)*page.getSize() ,
page.getWhere() );
for (HashMap<Object, Object> hashMap : listmap) {
T t1 = hashMapToEntity(hashMap);
list.add( t1 );
}
page.setList(list);
if ( page.getWhere()==null || page.getWhere().length()<=0 ) {
page.setCount( queryCount( ) );
}else {
page.setCount( queryCount( page.getWhere() ) );
}
int tmp = page.getCount()/page.getSize();
page.setMax(page.getCount()<=page.getSize()?1:page.getCount()%page.getSize()>0?tmp+1:tmp);
return page;
}
private T hashMapToEntity( Map<Object, Object> map ) {
T t = null;
try {
t = clsss.newInstance();
for (Field f : t.getClass().getDeclaredFields()) {
f.setAccessible(true);
f.set(t,map.get(f.getName()));
}
} catch (Exception e1) {
e1.printStackTrace();
}
return t;
}
public int queryCount() {
String tableName = clsss.getSimpleName().toLowerCase();
return getBaseDao().queryCount( tableName , "1=1" );
}
public int queryCount(String where) {
String tableName = clsss.getSimpleName().toLowerCase();
return getBaseDao().queryCount( tableName , where );
}
}
IBaseDao 接口
public interface IBaseDao <T> {
List<HashMap<Object, Object>> queryByPage(