1.配置
第一步 先在 項目的Project 的 buil.gradle 裡 在buildscript- repositories添加配置mavenCentral(),
在dependencies 裡添加
classpath’org.greenrobot:greendao-gradle-plugin:3.1.0
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'
}
}
第二步 在自己想要用的
GreenDao Module 裡的 dependencies 裡添加
compile'org.greenrobot:greendao:3.1.0'
compile'org.greenrobot:greendao-generator:3.1.0'
android 裡 添加
greendao{
schemaVersion1
daoPackage'com.afa.tourism.greendao.gen'
targetGenDir'src/main/java'
}
schemaVersion: 資料庫schema版本,也可以了解為資料庫版本号
daoPackage:設定DaoMaster、DaoSession、Dao包名
targetGenDir:設定DaoMaster、DaoSession、Dao目錄
targetGenDirTest:設定生成單元測試目錄
generateTests:設定自動生成單元測試用例
頭部 添加
第三步 建立新的實體類
在實體類 上方 寫 上 @Entity 即可!然後導包而且不需要寫set get 方法。 他自動幫我們生成.. 是不是很牛逼哦?
@Entity
public class User {
@Id(autoincrement = true)
private Long id;
private String name;
private String age;
private String sex;
private String salary;
}
1.)實體@Entity注解
schema:告知GreenDao目前實體屬于哪個schema
active:标記一個實體處于活動狀态,活動實體有更新、删除和重新整理方法
nameInDb:在資料中使用的别名,預設使用的是實體的類名
indexes:定義索引,可以跨越多個列
createInDb:标記建立資料庫表**
2.)基礎屬性注解
@Id :主鍵 Long型,可以通過@Id(autoincrement = true)設定自增長
@Property:設定一個非預設關系映射所對應的列名,預設是的使用字段名舉例:@Property (nameInDb=”name”)
@NotNul:設定資料庫表目前列不能為空
@Transient:添加次标記之後不會生成資料庫表的列
3.)索引注解
@Index:使用@Index作為一個屬性來建立一個索引,通過name設定索引别名,也可以通過unique給索引添加限制
@Unique:向資料庫列添加了一個唯一的限制
4.)關系注解
@ToOne:定義與另一個實體(一個實體對象)的關系
@ToMany:定義與多個實體對象的關系
(一) @Entity 定義實體
@nameInDb 在資料庫中的名字,如不寫則為實體中類名
@indexes 索引
@createInDb 是否建立表,預設為true,false時不建立
@schema 指定架構名稱為實體
@active 無論是更新生成都重新整理
(二) @Id
(三) @NotNull 不為null
(四) @Unique 唯一限制
(五) @ToMany 一對多
(六) @OrderBy 排序
(七) @ToOne 一對一
(八) @Transient 不存儲在資料庫中
(九) @generated 由greendao産生的構造函數或方法
//必須要先擷取實體類的Dao對象才能進行資料的增删改查操作
1.增
TestUser t = new TestUser();
t.setName(username);
t.setPassword(userpw);
//使用testUserDao對象直接将對象插入資料庫
testUserDao.insert(t);
2.删
//删除所有的資料
testUserDao.deleteAll();
Toast.makeText(this, "删除成功",
//根據name進行删除
方式一:
String name = deletebyidEdit.getText().toString().trim();
QueryBuilder qb1 = testUserDao.queryBuilder().where(TestUserDao.Properties.Name.eq(name));
List<TestUser> list1 = qb1.list();
testUserDao.delete(list1.get());
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
方式二:
testUserDao.deleteByKey(name );
3.改
String updataname = updatebyidEdit.getText().toString().trim();
String newname = newnameEdit.getText().toString().trim();
TestUser finuser = testUserDao.queryBuilder().where(TestUserDao.Properties.Name.eq(updataname)).build().unique();
if (finuser != null) {
finuser.setName(newname);
}
testUserDao.update(finuser);
Toast.makeText(this, "更新成功", Toast.LENGTH_SHORT).show();
4.查
//根據ID進行查詢
String queryid = qureybyidEdit.getText().toString().trim();
QueryBuilder qb = testUserDao.queryBuilder().where(TestUserDao.Properties.Name.eq(queryid ));
List<TestUser> list = qb.list();
result.setText("查詢結果是:" + list.get().toString());
//查詢出所有資料
List<TestUser> users = testUserDao.loadAll();
StringBuffer usersbuffer = new StringBuffer();
for (int i = ; i < users.size(); i++) {
usersbuffer.append(users.get(i).toString());
}
result.setText("查詢結果是:" + usersbuffer.toString());
執行sql 語句
String sql ="insert into user values (null,'111')";
testUserDao.execSQL(sql);