移动端的增量更新 - 点滴

javacoffe 2015-05-19

列表中的增量更新

增量更新是指在服务端只提供数据,在移动端通过时间戳拉取数据,数据是无状态,在移动端做本地数据库缓存,提供UI的数据展示。

移动端:

1.在移动端做本地数据库缓存,首次请求 version的值为0,拉取大于0的数据

2.后面的每次请求都取数据库中最后一条记录的 updateTime的值,作为version请求数据

3.在本地UL展示,从本地缓存数据库中取数据,并作分页,列表展示

服务端:

1.在数据库中设置两个字段值createTime,updateTime 字段类型为 Long

2.在应用中insert时设置createTime,updateTime 值为:System.currentTimeMillis()  精确到毫秒的值

3.在应用中update时设置updateTime,值为:System.currentTimeMillis()

4.在应用中delete时设置updateTime,值为:System.currentTimeMillis()  数据中只记录有效状态,下此更新把删除掉的数据返回给前端,前端做本地数据库删除记录。

5.在应用中获取列表时通过移动端请求的参数version的值在数据库中查询

<if test="updateTime != null" >
	  and <![CDATA[ update_time > #{updateTime} ]]>
</if>
<if test="updateTime == null">
	   and ref_id = 0
</if>

切记在updateTime为空的时候禁止获取数据,不然取的可能是重复的数据,或者是所有的数据

用System.currentTimeMillis()时间的好处:

1.精确到毫米级的值

2.在数据库操作比较直接比较因为都是Long类型的,如果是日期类型在数据库中还要进行各种转换,在时间戳Java中默认到毫秒,而在mysql数据库默认到秒,所以在数据库时间戳函数格式化为null,在程序中一定要除以1000

3.如果用看日期形式,也可以通过日期函数转化而看到

相关推荐