android studio中LitePal操作数据库

LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和增删改查操作。LitePal的项目主页上也有详细使用文档:https://github.com/LitePalFramework/LitePal
使用:
1.配置Litepal:在build.gradle文件的dependencies闭包中添加依赖:compile ‘org.litepal.android:core:1.4.1’
2.在src/main目录下创建一个assets目录,在该目录下新建一个litepal.xml文件,编辑里面内容:

用于指定数据库名
用于指定数据库版本号

3.在AndroidManifect.xml中的标签中写如下代码
android:name=“org.litepal.LitePalApplication”
4.可以创建和升级数据库了
如:创建一个Book类
public class Book extends DataSupport{
private int id;
private String author;
private double price;
private int pages;
private String name;
private String press;
//生成get和set方法的快捷键是Alt+Inser
public int getId() {
return id;
}

public void setId(int id) {
    this.id = id;
}

public String getAuthor() {
    return author;
}

public void setAuthor(String author) {
    this.author = author;
}

public double getPrice() {
    return price;
}

public void setPrice(double price) {
    this.price = price;
}

public int getPages() {
    return pages;
}

public void setPages(int pages) {
    this.pages = pages;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPress(){
    return press;
}
public void setPress(String press){
    this.press=press;
}

}
这是一个经典JavaBean,接下来将Book类映射模型列表当中,修改litepal.xml代码如下:









5.创建数据库,在MainActivity中添加如下代码:
Button createDatabase=findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LitePal.getDatabase();
}
});
6.升级同样的方式创建一张表,需要在litepal.xml添加mapping标签,同时版本号加1
7.添加数据:
Button addData=findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book=new Book();
book.setName(“The Da Vinci Code”);
book.setAuthor(“Dan Browm”);
book.setPages(454);
book.setPrice(16.94);
book.setPress(“Unknow”);
book.save();

}

});
8.更新数据:
Button updataData=findViewById(R.id.updata_data);
updataData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book=new Book();
//方法一只能对已存储的对象进行操作,限制性比较大
// book.setName(“The Lost Symbol”);
// book.setAuthor(“Dan Brown”);
// book.setPages(510);
// book.setPrice(19.95);
// book.setPress(“Unknow”);
// book.save();
// book.setPrice(10.99);
// book.save();
//方法二
book.setPrice(15.00);
book.setPress(“Anchor”);
book.updateAll(“name=? and author=?”,“The Lost Symbol”,“Dan Brown”);
//LitePal提供了一个setToDefault()方法,然后传入相应的列名就可实现
book.setToDefault(“pages”);
book.updateAll();
}
});
9.删除数据:
Button deleteData=findViewById(R.id.Delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DataSupport.deleteAll(Book.class,“price<?”,“15.01”);
}
});
10.查询数据
Button queryData=findViewById(R.id.Query_data);
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List books=DataSupport.findAll(Book.class);
for (Book book:books){
Log.d(“MainActivity”, "book name is "+book.getName());
Log.d(“MainActivity”, "book author is "+book.getAuthor());
Log.d(“MainActivity”, "book pages is "+book.getPages());
Log.d(“MainActivity”, "book price is "+book.getPrice());
Log.d(“MainActivity”, "book press is "+book.getPress());

    }
}

});
查询数据除了findAll()方法之外,LitePal还提供了很多其他有用的查询API
//查询Book表中的第一条数据
Book firstBook=DataSupport.finidFirst(Book.class);
//查询Book表中的最后一条数据
Book lastBook=DataSupport.finidLast(Book.class);

select()方法用于指定查询哪几列的数据,对应了SQL当中的select关键字,如查询name和author这两列数据
List books=DataSupport.select(“name”,“author”).find(Book,class);
where()方法用于指定查询的约束条件,对应SQl当中的where的关键字,如查询树大于400的数据
List books=DataSupport.where(“pages>?”,“400”).find(Book.class);
order()方法用于指定结果的排列方式,对应SQL语句中的order by关键字,如查询结果按书价格重高到低排序。
List books=DataSupport.order(“price desc”).find(Book.class);
limit()方法用于指定查询结果的数量,比如只查询表中的前3条数据。
List books=DataSupport.limit(3).find(Book.class);
offset()方法用于指定查询结果的偏移量,如查询表中第二第三第四条数据可以写:
List books=DataSupport.limit(3).offset(1).find(Book.class);
limit()和offset()方法共同对应了SQL当中的limit关键字。

LitePal仍然支持原生的SQL来查询
Cursor c=DataSupport.findBySQL(“select *from Book where pages>? and price<?”,“400”,“20”);
调用DataSupport。findBySQL()方法进行原生查询,第一个参数用于指定SQL语句,后参数用于指定占位符的值。注意findBySQL()方法返回一个Cursor对象。

发布了25 篇原创文章 · 获赞 1 · 访问量 717

猜你喜欢

转载自blog.csdn.net/weixin_43551957/article/details/103975439