LitePal
01 配置LitePal
1 引入Gradle依赖
implementation 'org.litepal.guolindev:core:3.1.1'
2 在assets目录下建立litepal.xml文件
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!-- 数据库名称 -->
<dbname value="litepalTest" ></dbname>
<!-- 版本号 -->
<version value="1" ></version>
<list>
<!-- 数据库表路径 -->
<mapping class =""></mapping>
</list>
</litepal>
3 设置manifest.xml中的application
<application
android:name="org.litepal.LitePalApplication"
></application>
02 建立数据库表
1 先新建一个类用于映射数据库表
public class News extends LitePalSupport{
//LitePal会自动生成一个id
private String title;
private String content;
private Date publishDate;
private int commentCount;
// 自动生成get、set方法
...
}
2 在litepal.xml文件中配置路径
<list>
<!-- 数据库表路径 -->
<mapping class ="com.example.LitePal.News"></mapping>
</list>
3 主活动生成数据库
Connector.getDatabase();
03 更新数据库
重复02建立数据库表操作,将litepal.xml文件中的版本值 +1 即可.
04 数据库的增删改查
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button create =(Button) findViewById(R.id.create);
Button add =(Button) findViewById(R.id.add);
Button update =(Button) findViewById(R.id.update);
Button delete =(Button) findViewById(R.id.delete);
Button show =(Button) findViewById(R.id.show);
create.setOnClickListener(this);
add.setOnClickListener(this);
update.setOnClickListener(this);
delete.setOnClickListener(this);
show.setOnClickListener(this);
}
@Override
public void onClick(View v) {
News news = new News();;
switch (v.getId()){
case R.id.create://创建数据表
Connector.getDatabase();
break;
case R.id.add://添加数据
news.setTitle("1");
news.setContent("内容:1");
news.save();
break;
case R.id.update://更新数据
//对标题为1的新闻内容进行修改
news.setTitle("1");
// 将content字段改为默认值 news.setToDefault("content");
news.setContent("内容修改");
news.updateAll("title=?","1");
break;
case R.id.delete://删除数据
LitePal.deleteAll(News.class,"title = ?","1");
break;
case R.id.show://修改数据
List<News> newsList = LitePal.findAll(News.class);
for (News new_: newsList){
System.out.println(new_.getTitle() + ": "+ new_.getContent());
}
// LitePal.select("title","content").where("title = ?","1").order("title desc").limit(3).find(News.class);
break;
}
}
}
05 数据库表关联建立
news和comment是一对多的关系, comment是多的一方
建立联系进行如下操作
在news类中添加comment
public class News {
private List<Comment> commentList = new ArrayList<Comment>();
// 自动生成get、set方法
}
在comment类中添加news
public class Comment {
...
private News news;
//comment类中不需要声明news_id变量;litepal会自动为数据库表添加news_id列
// 自动生成get、set方法
}
然后照旧在litepal中注册
当添加新闻时,将评论信息添加到新闻中,litepal会自动为评论添加设置news_id(news_id是新闻的主键)
//评论1
Comment comment1 = new Comment();
comment1.setContent("好评!");
comment1.setPublishDate(new Date());
comment1.save();
//评论2
Comment comment2 = new Comment();
comment2.setContent("赞一个");
comment2.setPublishDate(new Date());
comment2.save();
//新闻中添加评论1和2, litepal自动为评论添加news_id
News news = new News();
news.getCommentList().add(comment1);
news.getCommentList().add(comment2);
news.setTitle("第二条新闻标题");
news.setContent("第二条新闻内容");
news.setPublishDate(new Date());
news.setCommentCount(news.getCommentList().size());
news.save();