2010开始那会开始接触安卓总认为安卓和 微软最早的VB 差不了多少,总觉得没有什么学习成本,因为手上有安卓工控机设备的项目,今天回头一看Android,没想到安卓已经变成如今这番光景。
所以每种框架和技术都开始过一次吧,今天记录一下自己演练的一个GreenDao
第一步:修改两个build.gradle文件
先在Module 的build.grade引入GreenDao的包以前相关配置
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.navigation:navigation-fragment:2.1.0'
implementation 'androidx.navigation:navigation-ui:2.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'org.greenrobot:greendao:3.2.2' // 添加greendao库
}
greendao {
daoPackage 'com.example.mystudy.db' // 设置DaoMaster、DaoSession、Dao 包名
schemaVersion 2 //当前数据库版本
targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录
generateTests false //设置为true以自动生成单元测试。
targetGenDirTests 'src/main/java' //应存储生成的单元测试的基本目录。默认为 src / androidTest / java。
}
在这个文件头上再加上一个插件引用
apply plugin: 'org.greenrobot.greendao' // apply plugin
在Project 的build.gradle上加一行
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.0"
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // add GreenDao plugin
}
}
然后在这个文件右上角的地方(Android Studio IDE环境)点一下Sync同步一下
第二步:开始GreenDao的真实表演
1、写一个class:PeopleInfo.java
注解:@Entity 表示这是一个表, @id(autoincrement)表示键自增
注意一个坑:自增长的id字段Long 不要写成long,要不然以后表时就是一个0,不会自增的。
@Entity
public class PeopleInfo {
@Id(autoincrement=true)
private Long id;
private String name;
private String gender;
}
第二步:然后点AndroidStuido 菜单上的Build->MakeProject ,
GreenDao就会根据配置在build.gradle上的内容生成目录和文件:DaoMaster 、DaoSession、PeopleInfoDao 并把PeopleInfo.java补上一堆代码
第三步:在application文件中加入GreenDao初始化的代码,
以后调用getDaoSeesion()方法即可
public class MyApplication extends Application {
private static Context context;
private static DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
context=this.getApplicationContext();
setupDb(context);
}
private void setupDb(Context context){
DaoMaster.DevOpenHelper openHelper=new DaoMaster.DevOpenHelper(context,"mydb.db");
SQLiteDatabase db =openHelper.getWritableDatabase();
DaoMaster daoMaster =new DaoMaster(db);
daoSession =daoMaster.newSession();
}
public static Context getContext() {
return context;
}
public static DaoSession getDaoSession() {
return daoSession;
}
}
第三步:插入数据库操作
view.findViewById(R.id.button_first).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PeopleInfo peopleInfo= new PeopleInfo();
peopleInfo.setGender("Man");
peopleInfo.setName("中国人");
try {
MyApplication.getDaoSession().getPeopleInfoDao().insert(peopleInfo);//增加记录操作
}
catch (Exception e){
Log.d("ERROR", e.toString());
}
NavHostFragment.findNavController(FirstFragment.this)
.navigate(R.id.action_FirstFragment_to_SecondFragment);
}
});
第四步:读操作
tv=(TextView) view.findViewById(R.id.textview_second);
List<PeopleInfo> list=MyApplication.getDaoSession().getPeopleInfoDao().loadAll();
StringBuffer aaa =new StringBuffer();
for (PeopleInfo people:list) {
aaa.append(people.getId());
aaa.append(people.getName());
aaa.append(people.getGender());
}
tv.setText(aaa);