通过litepal可以方便的直接将你编写的类映射为数据表(table),lietpal的具体使用方法不在此处讨论:
https://blog.csdn.net/guolin_blog/article/details/38556989
一、数据类的代码:
本项目中的litepal.xml:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="CanteenManager"></dbname>
<version value="1"></version>
<list>
<mapping class="com.example.fanpeng.smartcanteen.User"></mapping>
<mapping class="com.example.fanpeng.smartcanteen.Dishes"></mapping>
<mapping class="com.example.fanpeng.smartcanteen.Comment"></mapping>
</list>
</litepal>
用户表user:
package com.example.fanpeng.smartcanteen;
import org.litepal.LitePal;
import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class User extends LitePalSupport implements Serializable {
private int id;//自增
@Column(unique = true)
private String name;
private String pass;
@Column(defaultValue = "2")
private int identity;//辨别身份,0为管理员,1为商家,2为客户
private String part=null;//主要用于辨别商家所处食堂和窗口,默认为"yixin1"意为益新一楼,具体窗口暂不设
private List<Comment> comments;//该客户给予的评价
private List<Dishes> myUp=new ArrayList<>();//商家上传的菜品
private int DishesCount;//该用户上传的菜品数量
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public int getIdentity() {
return identity;
}
public void setIdentity(int identity) {
this.identity = identity;
}
public String getPart() {
return part;
}
public void setPart(String part) {
this.part = part;
}
public int getDishesCount() {
return DishesCount;
}
public void setDishesCount(int dishesCount) {
DishesCount = dishesCount;
}
public void setComments(List<Comment> comments) {
this.comments = comments;
}
public List<Dishes> getMyUp() {
return myUp;
}
public void setMyUp(List<Dishes> myUp) {
this.myUp = myUp;
}
public List<Comment> getComments() {
return comments;
}
public void setComments(ArrayList<Comment> comments) {
this.comments = comments;
}
}
菜品表:
package com.example.fanpeng.smartcanteen;
import org.litepal.LitePal;
import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Dishes extends LitePalSupport implements Serializable {
private int id;
private String DishNum;
@ Column(unique = true)
private String name;
private String part;//菜品所在分区
public double price;
private User up;//菜品上传者
private List<Comment> comments;//菜品获得的评价
private int CommentCount;
private String upDate;//日期用字符串储存
private String picturePath;
@Column(defaultValue = "true")
private boolean onSale;//是否上架,数据库中以0/1的方式保存;
public boolean isOnSale() {
return onSale;
}
public void setOnSale(boolean onSale) {
this.onSale = onSale;
}
public String getPicturePath() {
return picturePath;
}
public void setPicturePath(String picturePath) {
this.picturePath = picturePath;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPart(String part) {
this.part = part;
}
public String getPart() {
return part;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public User getUp() {
return up;
}
public void setUp(User up) {
this.up = up;
}
public int getCommentCount() {
return CommentCount;
}
public void setCommentCount(int commentCount) {
CommentCount = commentCount;
}
public List<Comment> getComments() {
return comments;
}
public void setComments(List<Comment> comments) {
this.comments = comments;
}
public String getUpDate() {
return upDate;
}
public void setUpDate(String upDate) {
this.upDate = upDate;
}
public String getDishNum() {
return DishNum;
}
public void setDishNum(String dishNum) {
DishNum = dishNum;
}
}
评论表Comment:
package com.example.fanpeng.smartcanteen;
import org.litepal.crud.LitePalSupport;
import java.io.Serializable;
import java.util.Date;
public class Comment extends LitePalSupport implements Serializable {
private int id;
private String text;//评论的内容
private Dishes dish;
private User commentator;//评论者
private double grade;//给出的分数
private String setDate;//评论日期
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getId() {
return id;
}
public Dishes getDish() {
return dish;
}
public User getCommentator() {
return commentator;
}
public double getGrade() {
return grade;
}
public void setId(int id) {
this.id = id;
}
public void setDish(Dishes dish) {
this.dish = dish;
}
public void setCommentator(User commentator) {
this.commentator = commentator;
}
public void setGrade(double grade) {
this.grade = grade;
}
public String getSetDate() {
return setDate;
}
public void setSetDate(String setDate) {
this.setDate = setDate;
}
}
二、使用注意
(1)创建数据类时将字段写好后尽量使用Android Studio的generater功能自动生成每个字段的getter和setter方法,尽量不要自己写,很容易出现问题;
(2)使用litepal查询时如果需要使用到正在查询表的关联表的内容时需要使用激进查询。
(3)总之litepal又不会用的地方就看郭霖大神的博客就完事了