是基于SqlSessionTemplate
spring与mybatis的整合方式二,参见
mybatis与spring整合(方式二)
public class BaseMybatisDAO {
@Autowired private SqlSessionTemplate template;
//Search为封装的分页查询类,PagingResult为分页结果类
public <T extends BaseEntity> PagingResult<T> findForPage(String countSqId,String sqlId,Search search){
RowBounds rowBounds=new RowBounds(search.getFirstRowNum(),search.getRows());
List<T> list=template.selectList(sqlId,getConditionMap(search),rowBounds);
//search.getPage()当前第几页
//search.getRows()一页有多少条记录
//count()记录总数
//list 当前页的数据结果
return new PagingResult<T>(search.getPage(),count(countSqId,search),search.getRows(),list);
}
/**
* 查询指定SQL语句所包含的记录数
* @param countId
* @param search
* @return
*/
private long count(String countId,Search search){
return template.selectOne(countId,getConditionMap(search));
}
private Map<String,Object> getConditionMap(Search search){
Map<String,Object> conditionMap=new HashMap<String,Object>();
if(search.getConditionList()!=null){
for(Condition condition:search.getConditionList()){
conditionMap.put(condition.getName(),condition.getValue());
}
}
return conditionMap;
}
}
简单的使用举例:
public PagingResult<Deal> getDealsOfCategories(Search search){
return super.findForPage(MAPPER_NAMESPACE+".countDealsOfCategories",MAPPER_NAMESPACE+".selectDealsOfCategories",search);
}
Search辅助类
package com.tortuousroad.framework.common.search;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 查询类
* Created by asus on 2017/8/1.
*/
public class Search implements Serializable {
private static final long serialVersionUID = 1435009619155643773L;
/**
* 当前页码
*/
@Getter
private int page=1;
/**
* 每页记录数
*/
@Getter
private int rows=20;
/**
* 查询条件组
*/
@Getter @Setter
private List<Condition> conditionList=new ArrayList<Condition>();
public void setPage(int page){
this.page=page;
if(page<1){
this.page=1;
}
}
public void setRows(int rows) {
this.rows = rows;
if (rows < 1) {
this.rows = 1;
}
}
/**
* 获得当前页第一行数据的行号
* @return
*/
public int getFirstRowNum(){
return ((page-1)*rows);
}
}
PagingResult 分页查询结果辅助类
package com.tortuousroad.framework.common.page;
import com.tortuousroad.framework.base.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
/**
* 分页查询结果
* Created by asus on 2017/8/1.
*/
@AllArgsConstructor
@ToString
public class PagingResult<T extends BaseEntity> implements Serializable {
private static final long serialVersionUID = 3739432000715879711L;
/**
* 当前页码
*/
@Getter @Setter
private int page;
/**
* 总记录数
*/
@Getter @Setter
private long total;
/**
* 每页记录数
*/
@Getter @Setter
private int pageSize;
/**
* 每页数据记录
*/
@Getter @Setter
private List<T> rows;
}