分頁查詢資料類PagingData
阿新 • • 發佈:2018-11-30
分頁查詢資料類
public class PagingData<T> implements Serializable
{
// 構造初始化大小
public ModelTest() {
list = new ArrayList<T>();
total= 0;
}
public ModelTest(List<T> list,Integer total) {
list = new ArrayList<T>();
count = 0;
this .list = list;
this.total= total;
}
private List<T> rows; // 返回資料集合
private Integer total; //總條數
public PagingData(List<T> rows, Integer total)
{
this.rows = new ArrayList();
this.total = Integer.valueOf(0);
this.rows = rows;
this.total = total;
}
public PagingData()
{
rows = new ArrayList();
total = Integer.valueOf(0);
}
public List getRows()
{
return rows;
}
public void setRows(List rows)
{
this.rows = rows;
}
public Integer getTotal()
{
return total;
}
public void setTotal(Integer total)
{
this.total = total;
}
}
用法
@Service
@Transactional(readOnly = true)
public class BlockchainCoinRecordServiceImpl implements BlockchainCoinRecordService {
private static final Logger LOGGER = LoggerFactory.getLogger(BlockchainCoinRecordServiceImpl.class);
@Autowired
BlockchainCoinRecordMapper blockchainCoinRecordMapper;
/**
* BlockchainCoinRecord 為實體類
*/
@Override
public PagingData<BlockchainCoinRecord> selectPage(BlockchainCoinRecord entity) {
PagingData<BlockchainCoinRecord> pagingData = new PagingData<>();
if (null == entity) {
LOGGER.warn("select entity page, but entity is null...");
return pagingData;
}
Integer queryCount = blockchainCoinRecordMapper.selectByIndexCount(entity);
pagingData.setTotal(queryCount);
if (null != queryCount && queryCount <= 0) {
LOGGER.info("select entity page , but count {} == 0 ...", queryCount);
return pagingData;
}
List<BlockchainCoinRecord> entitys = selectByIndex(entity);
pagingData.setRows(entitys);
return pagingData;
}
@Override
public List<BlockchainCoinRecord> selectByIndex(BlockchainCoinRecord entity) {
List<BlockchainCoinRecord> entitys = new ArrayList<>();
if (entity == null) {
LOGGER.warn("select entity by index, but entity is null ...");
return entitys;
}
return blockchainCoinRecordMapper.selectByIndex(entity);
}
}
mapper 對映
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hesvit.mapper.BlockchainCoinRecordMapper">
<sql id="baseColumns">
a.id, a.user_id, a.coin, a.type, a.remark, a.status,
a.create_user_id, a.create_time, a.update_user_id, a.update_time
</sql>
<sql id="whereClause">
<trim prefix="WHERE" prefixOverrides="AND">
<if test="id != null">
AND ${columnPrefix}id = #{id}
</if>
<if test="userId != null">
AND ${columnPrefix}user_id = #{userId}
</if>
<if test="coin != null">
AND ${columnPrefix}coin = #{coin}
</if>
<if test="type != null">
AND ${columnPrefix}type = #{type}
</if>
<if test="remark != null">
AND ${columnPrefix}remark = #{remark}
</if>
<if test="status != null and status != -1">
AND ${columnPrefix}status = #{status}
</if>
<if test="createUserId != null">
AND ${columnPrefix}create_user_id = #{createUserId}
</if>
<if test="createTime != null">
AND ${columnPrefix}create_time = #{createTime}
</if>
<if test="updateUserId != null">
AND ${columnPrefix}update_user_id = #{updateUserId}
</if>
<if test="updateTime != null">
AND ${columnPrefix}update_time = #{updateTime}
</if>
<if test="startDate != null">
AND ${columnPrefix}create_time > #{startDate}
</if>
<if test="endDate != null">
AND ${columnPrefix}create_time < #{endDate}
</if>
</trim>
</sql>
<select id="selectByIndexCount" parameterType="BlockchainCoinRecord"
resultType="int">
SELECT count(1)
FROM t_blockchain_coin_record a
<include refid="whereClause">
<property name="columnPrefix" value="a." />
</include>
</select>
<select id="selectByIndex" parameterType="BlockchainCoinRecord"
resultType="BlockchainCoinRecord">
SELECT
<include refid="baseColumns" />
FROM t_blockchain_coin_record a
<include refid="whereClause">
<property name="columnPrefix" value="a." />
</include>
group by a.id
ORDER BY a.id DESC
<if test="limit != -1">
LIMIT #{offset} , #{limit}
</if>
</select>
</mapper>