利用GreenDao实现本地购物车(一)
最近开发有一个需求就是实现扫一扫,添加商品到购物车,购物车页面添加一个清空按钮,购物车列表页面,可以调整数据,可以增加,减少,与输入数字。
效果大概如图所示:
还有长按删除数据,减少数字到0 时自动删除该项item。
所以,此处我利用的是GreenDao实现该购物车。
首先,之前没有用过GreenDao,下面是使用GreenDao的导入与使用步骤。
首先:
在App的gradle下,添加如下:
apply plugin: 'org.greenrobot.greendao' // apply plugin
implementation 'org.greenrobot:greendao:3.2.2' // add library
还有如果需要配置生成数据库文件的话,需要添加如下:
greendao {//添加到 android{}里面 schemaVersion 1 daoPackage 'com.greendao.test'//此处是自命名的生成数据库的报名 可以根据自己的需要设置 targetGenDir 'src/main/java' }
接下来,在项目的project的gradle中,添加如下:
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
mavenCentral() // add repository 添加到repositories中
如图所示:
此处就是将GreenDao引入项目的过程。
接下来,就是创建数据库所需的数据类。
关键点如下所示:
import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Generated; import org.greenrobot.greendao.annotation.Id; import org.greenrobot.greendao.annotation.Unique; import java.io.Serializable; /** * @author: 12233 * @date: 2019/9/30 @Entity 声明数据库的类 */ @Entity public class CashierGoodsEntity implements Serializable { //ID 自增,必须声明为大写的Long @Id(autoincrement = true) private Long id; private String name; private String price; private int number; //@Unique 代表在数据库中,这个字段的值是唯一的 如商品ID等,用来操作数据库,修改等 @Unique private String goodsId; private String imgUrl; private String stockNumber; //实现序列化接口,需要声明的常量 private static final long serialVersionUID = 1L; //下面所有的数据 都是自动生成的 不需要手动去实现 @Generated(hash = 1418534478) public CashierGoodsEntity(Long id, String name, String price, int number, String goodsId, String imgUrl, String stockNumber) { this.id = id; this.name = name; this.price = price; this.number = number; this.goodsId = goodsId; this.imgUrl = imgUrl; this.stockNumber = stockNumber; } @Generated(hash = 1050263336) public CashierGoodsEntity() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getPrice() { return this.price; } public void setPrice(String price) { this.price = price; } public int getNumber() { return this.number; } public void setNumber(int number) { this.number = number; } public String getGoodsId() { return this.goodsId; } public void setGoodsId(String goodsId) { this.goodsId = goodsId; } public String getImgUrl() { return this.imgUrl; } public void setImgUrl(String imgUrl) { this.imgUrl = imgUrl; } public String getStockNumber() { return this.stockNumber; } public void setStockNumber(String stockNumber) { this.stockNumber = stockNumber; } }
此处是自动生成的GreenDao相关的类。