@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LitePal.getDatabase();
}
});
Button addData = (Button) findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setName("java编程思想");
book.setAuthor("dan brown");
book.setPages(500);
book.setPress("unkonw");
book.setPrice(50.2);
book.save();
}
});
Button updateData = (Button) findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setName("java入门到精通");
book.setAuthor("dan brown");
book.setPages(50);
book.setPress("unkonw");
book.setPrice(55.2);
book.save();
book.setPrice(100.2);
book.save();
}
});
Button deleteData = (Button) findViewById(R.id.delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DataSupport.deleteAll(Book.class, "price>?", "90");
}
});
Button queryData = (Button) findViewById(R.id.query_data);
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Book> 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());
}
}
});
}
总结:
1. LitePal采用的是对象关系映射(ORM)模式,需要配置映射模型,也就是指定用那个类来映射为数据库的表,如下:
<mapping class="com.example.litepaltest.Book"></mapping>
2. 如果要修改表,比如添加新字段或者创建新的映射模型,记得在版本号加1就行了
<version value="2"></version>
3. LitePal进行表管理操作是不需要模型类有任何的继承结构,但是进行增删改查就不行了,必须要继承DataSupport类才行,save()方法就是来自DataSupport类的。上面代码中的更新方式只能对已存储的对象进行操作,更灵活的应该是下面这一种,不用从新插入一条新的记录,直接在当前记录修改。deleteAll用法也是一样。
Book book = new Book();
book.setPrice(132.5);
book.setAuthor("anchor");
book.updateAll("name = ? and author = ?","java入门到精通","dan brown");