练习greenDao数据库框架引入
时间: 2023-10-25 09:06:54 浏览: 55
GreenDao是一个高效、轻量级、快速的ORM(对象关系映射)框架,可以方便地将Java对象映射到SQLite数据库中。下面是GreenDao的引入和使用步骤:
1. 在build.gradle文件中添加以下依赖:
```groovy
dependencies {
implementation 'org.greenrobot:greendao:3.3.0'
}
```
2. 在app/build.gradle文件中添加以下配置:
```groovy
android {
defaultConfig {
//...
javaCompileOptions {
annotationProcessorOptions {
arguments = ["schemaVersion": "1", "daoPackage": "com.example.myapp.db"]
}
}
}
}
greendao {
schemaVersion 1
daoPackage 'com.example.myapp.db'
targetGenDir 'src/main/java'
}
```
这些配置将告诉GreenDao在编译时生成DAO(数据访问对象)类。schemaVersion是数据库的版本号,daoPackage是生成DAO类的包名,targetGenDir是DAO类的生成目录。
3. 创建实体类,例如:
```java
@Entity
public class User {
@Id(autoincrement = true)
private Long id;
private String name;
private int age;
// getters and setters
}
```
@Entity注解表示这是一个实体类,@Id注解表示这是主键,autoincrement = true表示主键自增。
4. 在app/src/main/java目录下创建一个名为“greenDao”的包,并在该包下创建一个名为“DaoMasterOpenHelper”的类。该类继承自DaoMaster.OpenHelper,用于创建和升级数据库。例如:
```java
public class DaoMasterOpenHelper extends DaoMaster.OpenHelper {
public DaoMasterOpenHelper(Context context, String name) {
super(context, name);
}
@Override
public void onCreate(Database db) {
super.onCreate(db);
}
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
// 数据库升级逻辑
}
}
```
5. 初始化GreenDao,在Application类的onCreate()方法中添加以下代码:
```java
public class MyApp extends Application {
private DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
DaoMasterOpenHelper helper = new DaoMasterOpenHelper(this, "mydb");
Database db = helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
```
这里创建了一个DaoMasterOpenHelper实例,并通过它获取可写的数据库,然后创建一个DaoSession实例。
6. 使用GreenDao,例如:
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaoSession daoSession = ((MyApp) getApplication()).getDaoSession();
User user = new User();
user.setName("Tom");
user.setAge(18);
daoSession.getUserDao().insert(user);
List<User> userList = daoSession.getUserDao().queryBuilder()
.where(UserDao.Properties.Age.gt(10))
.orderAsc(UserDao.Properties.Age)
.list();
}
}
```
这里通过getApplication()方法获取MyApp实例,然后通过getDaoSession()方法获取DaoSession实例。接着创建了一个User实例并插入到数据库中。最后使用查询构建器查询年龄大于10的所有用户,并按年龄升序排序。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)