一隧熙、使用LitePal操作數(shù)據(jù)庫(kù)
(1)將LitePal的jar包引入到項(xiàng)目當(dāng)中LitePal的最新版本
(2)在項(xiàng)目的assets目錄下新建一個(gè)litepal.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo"></dbname>
<version value="1"></version>
<list>
</list>
</litepal>
dbname:用于設(shè)定數(shù)據(jù)庫(kù)的名字
version:用于設(shè)定數(shù)據(jù)庫(kù)的版本號(hào)
list:用于設(shè)定所有的映射模型
(3)配置LitePalApplication
- 自定義Application或在AndroidManifest.xml中配置一下LitePalApplication
public class MyApplication extends LitePalApplication {
}
android:name="org.litepal.LitePalApplication"
(4)建表
- 創(chuàng)建一個(gè)會(huì)員表:id自增長(zhǎng)、name會(huì)員名稱上鞠、sex會(huì)員性別尺借。
public class Member extends LitePalSupport {
private int id;
private String name;
private String sex;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
- 在<list>標(biāo)簽中加入Member模型類的聲明。
<list>
<mapping class="com.example.sql.Member"></mapping>
</list>
注意這里一定要填入Member類的完整類名盈电。
(5)升級(jí)數(shù)據(jù)庫(kù)新增表
- 新建一個(gè)會(huì)員興趣表:id自增長(zhǎng)蝴簇、content興趣愛(ài)好
public class Interest extends LitePalSupport {
private int id;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content= content;
}
}
- 在映射列表中新增Interest類,并將版本號(hào)加1匆帚。
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo"></dbname>
<version value="2"></version>
<list>
<mapping class="com.example.sql.Member"></mapping>
<mapping class="com.example.sql.Interest"></mapping>
</list>
</litepal>
(6)增加表中的字段
- 在會(huì)員表中新增字段:age年齡
public class Member extends LitePalSupport {
private int id;
private String name;
private String sex;
private int age;
//自動(dòng)生成get熬词、set方法
}
- 在litepal.xml中對(duì)版本號(hào)進(jìn)行加1操作
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo"></dbname>
<version value="3"></version>
<list>
<mapping class="com.example.sql.Member"></mapping>
<mapping class="com.example.sql.Interest"></mapping>
</list>
</litepal>
(7)表與表之間的關(guān)聯(lián)關(guān)系:一對(duì)一關(guān)系表
- 新建表account:username用戶名稱、password賬戶密碼
public class Account extends LitePalSupport {
private int id;
private String username;
private String password;
//自動(dòng)生成get互拾、set方法
}
- 在Member表中可以得到一個(gè)對(duì)應(yīng)的Account的實(shí)例均践,那么它們之間就是一對(duì)一關(guān)系了。
public class Member extends LitePalSupport {
private Account account;
//自動(dòng)生成get摩幔、set方法
}
- 在litepal.xml中對(duì)版本號(hào)進(jìn)行加1操作彤委,并在映射列表中新增Account類
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo"></dbname>
<version value="4"></version>
<list>
<mapping class="com.example.sql.Member"></mapping>
<mapping class="com.example.sql.Interest"></mapping>
<mapping class="com.example.sql.Account"></mapping>
</list>
</litepal>
(8)表與表之間的關(guān)聯(lián)關(guān)系:一對(duì)多關(guān)系表
- 在Member表中可以得到多個(gè)Interest的實(shí)例
public class Member extends LitePalSupport {
private List<Interest> interestList = new ArrayList<Interest>();
//自動(dòng)生成get、set方法
}
- 在Interest表中可以得到一個(gè)Member的實(shí)例
public class Interest extends LitePalSupport {
private Member member;
//自動(dòng)生成get或衡、set方法
}
在Interest類中聲明了一個(gè)Member的實(shí)例焦影,這樣就清楚地表示出了Member中可以包含多個(gè)Interest,而Interest中只能有一個(gè)Member封断,也就是一對(duì)多的關(guān)系了斯辰。
- 在litepal.xml中對(duì)版本號(hào)進(jìn)行加1操作
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo"></dbname>
<version value="5"></version>
<list>
<mapping class="com.example.sql.Member"></mapping>
<mapping class="com.example.sql.Interest"></mapping>
<mapping class="com.example.sql.Account"></mapping>
</list>
</litepal>
(9)表與表之間的關(guān)聯(lián)關(guān)系:多對(duì)多關(guān)系表
- 在Member表中可以得到多個(gè)Interest的實(shí)例
public class Member extends LitePalSupport {
private List<Interest> interestList = new ArrayList<Interest>();
//自動(dòng)生成get、set方法
}
- 在Interest表中可以得到多個(gè)Member的實(shí)例
public class Interest extends LitePalSupport {
private List<Member> memberList = new ArrayList<Member>();
//自動(dòng)生成get坡疼、set方法
}
這樣就清楚地表達(dá)出它們之間是多對(duì)多的關(guān)聯(lián)了彬呻。
- 在litepal.xml中對(duì)版本號(hào)進(jìn)行加1操作
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo"></dbname>
<version value="6"></version>
<list>
<mapping class="com.example.sql.Member"></mapping>
<mapping class="com.example.sql.Interest"></mapping>
<mapping class="com.example.sql.Account"></mapping>
</list>
</litepal>
(10)使用LitePal存儲(chǔ)數(shù)據(jù)
Member member = new Member();
member.setName("沈騰");
member.setSex("男");
member.setAge(35);
member.save();
(11)存儲(chǔ)一對(duì)一關(guān)系型數(shù)據(jù)
Member member = new Member();
member.setName("沈騰");
member.setSex("男");
member.setAge(35);
Account account = new Account();
account.setUsername("123456");
account.setPassword("123456");
account.save();
member.setAccount(account);
member.save();
(12)存儲(chǔ)一對(duì)多關(guān)系型數(shù)據(jù)
Member member = new Member();
member.setName("沈騰");
member.setSex("男");
member.setAge(35);
Interest interest1 = new Interest();
interest1.setContent("表演");
interest1.save();
Interest interest2 = new Interest();
interest2.setContent("搞笑");
interest2.save();
Interest interest3 = new Interest();
interest3.setContent("相聲");
interest3.save();
member.getInterestList().add(interest1);
member.getInterestList().add(interest2);
member.getInterestList().add(interest3);
member.save();
(13)存儲(chǔ)多對(duì)多關(guān)系型數(shù)據(jù)
Member member1 = new Member();
member1.setName("沈騰");
member1.setSex("男");
member1.setAge(35);
Member member2 = new Member();
member2.setName("岳云鵬");
member2.setSex("男");
member2.setAge(31);
Interest interest1 = new Interest();
interest1.setContent("表演");
interest1.getMemberList ().add(member1);
interest1.getMemberList ().add(member2);
interest1.save();
Interest interest2 = new Interest();
interest2.setContent("搞笑");
interest2.getMemberList ().add(member1);
interest2.getMemberList ().add(member2);
interest2.save();
Interest interest3 = new Interest();
interest3.setContent("相聲");
interest3.getMemberList ().add(member1);
interest3.getMemberList ().add(member2);
interest3.save();
member1.getInterestList().add(interest1);
member1.getInterestList().add(interest2);
member1.getInterestList().add(interest3);
member2.getInterestList().add(interest1);
member2.getInterestList().add(interest2);
member2.getInterestList().add(interest3);
member1.save();
member2.save();
(14)修改表中的數(shù)據(jù)
- 使用ContentValues封裝待修改數(shù)據(jù)
ContentValues values = new ContentValues();
values.put("name", "郭德綱");
values.put("sex", "男");
values.put("age", 54);
//根據(jù)id修改數(shù)據(jù)
LitePal.update(Member.class, values, 1);
//根據(jù)條件修改數(shù)據(jù)
LitePal.updateAll(Member.class, values, "name = ?", "岳云鵬");
LitePal.updateAll(Member.class, values, "name = ? and age > ?", "岳云鵬", "30");
- 直接使用對(duì)象修改數(shù)據(jù)
Member member = new Member();
member.setName("周潤(rùn)發(fā)");
member.setBirthday(54);
//根據(jù)id修改數(shù)據(jù)
member.update(1);
//根據(jù)條件修改數(shù)據(jù)
member.updateAll("name = ? and age > ?", "岳云鵬", "30");
(15)刪除表中的數(shù)據(jù)
//刪除整個(gè)表數(shù)據(jù)
LitePal.deleteAll(Member.class);
//根據(jù)id刪除數(shù)據(jù)
LitePal.delete(Member.class, 1);
//根據(jù)條件刪除數(shù)據(jù)
LitePal.deleteAll(Member.class, "name = ? and age > ?", "岳云鵬", "30");
(16)查詢表中的數(shù)據(jù)
//查詢所有數(shù)據(jù)
LitePal.findAll(Member.class);
//根據(jù)id查詢數(shù)據(jù)
LitePal.find(Member.class, 1);
LitePal.findAll(Member.class, 1, 2, 5);
//查詢第一條數(shù)據(jù)
LitePal.findFirst(Member.class);
//查詢最后一條數(shù)據(jù)
LitePal.findLast(Member.class);
//根據(jù)條件查詢數(shù)據(jù)
LitePal.where("age > ?", "30").find(Member.class);
//設(shè)置返回?cái)?shù)據(jù)條件
LitePal.select("name", "age").where("age > ?", "30").find(Member.class);
//設(shè)置排序條件:asc表示正序排序、desc表示倒序排序
LitePal.select("name", "age").where("age > ?", "30").order("age asc").find(Member.class);
//設(shè)置查詢前多少條數(shù)據(jù)
LitePal.select("name", "age").where("age > ?", "30").order("age asc").limit(10).find(Member.class);
//設(shè)置查詢數(shù)據(jù)偏移量
LitePal.select("name", "age").where("age > ?", "30").order("age asc").limit(10).offset(10).find(Member.class);
//查詢總共有多少條數(shù)據(jù)
LitePal.count(Member.class);
//查詢總數(shù)
LitePal.sum(Member.class, "age", int.class);
//查詢平均數(shù)
LitePal.average(Member.class, "age");
//查詢最大值
LitePal.max(Member.class, "age", int.class);
//查詢最小值
LitePal.min(Member.class, "age", int.class);
(17)查詢關(guān)聯(lián)表的數(shù)據(jù)
- 激進(jìn)查詢一對(duì)一關(guān)系表
Member member = LitePal.find(Member.class, 1, true);
Account account= member.getAccount();
- 激進(jìn)查詢一對(duì)多關(guān)系表
Member member = LitePal.find(Member.class, 1, true);
List<Interest> interestList = member.getInterestList ();
- 激進(jìn)查詢多對(duì)多關(guān)系表
Member member = LitePal.find(Member.class, 1, true);
List<Interest> interestList = member.getInterestList ();
(18)原生查詢
Cursor cursor = LitePal.findBySQL("select * from member where age > ?", "30");