GreenDao入门

来源:互联网 发布:阿里云 iis 404 编辑:程序博客网 时间:2024/06/08 18:49

首先导入依赖.放上图,在工程的gradle里面


项目的工程里



下面放上代码,在工程的build.gradle里面

buildscript {        repositories {        google()        jcenter()        mavenCentral() // add repository    }    dependencies {        classpath 'com.android.tools.build:gradle:3.0.1'        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}

在项目的build.gradle里面

apply plugin: 'com.android.application'apply plugin: 'org.greenrobot.greendao' // apply pluginandroid {    compileSdkVersion 26 defaultConfig {        applicationId "com.example.myapplication"        minSdkVersion 19        targetSdkVersion 26        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}/** * greendao * */greendao{    targetGenDir 'src/main/java'    daoPackage 'com.example.myapplication.dao'    schemaVersion 1}dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support:appcompat-v7:26.1.0'    implementation 'com.android.support.constraint:constraint-layout:1.0.2'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.1'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'    compile 'org.greenrobot:greendao:3.2.2' // add library    compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'}

retrofit的依赖.这篇文章里请求网络

compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'    compile 'com.squareup.retrofit2:converter-scalars:2.0.0'

添加请求网络的权限

  <uses-permission android:name="android.permission.INTERNET"/>

新建Iapplication类继承Application,并在清单文件中配置

public class IApplication extends Application{    public static DaoSession session;    @Override    public void onCreate() {        super.onCreate();        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this,"tableName");        //获得数据库       // Database database1 = devOpenHelper.getEncryptedWritableDb("password");        Database database = devOpenHelper.getWritableDb();        //提成成员变量        session = new DaoMaster(database).newSession();    }}

清单文件中注册

 <application        android:name=".IApplication"

请求网络返回的 bean类,需要把bean里面真正需要的内部类 弄出去,新建一个bean类,

/** * //表名更改 test * @Entity(nameInDb = "test" //,indexes = {@Index(value="username,password")} ) *  @Id(autoincrement = true)自增 *  @NotNull  非空 *  @Property(nameInDb = "nn") 字段名更改 nn * @Transient  不加入数据库 *  */

@Entity//必须要加的public class NewslistBean {    /**     * ctime : 2017-11-30     * title : 2017年最后一个月:愿你看淡世事沧桑,内心安然无恙     * description : 一读     * picUrl : https://zxpic.gtimg.com/infonew/0/wechat_pics_-60570241.jpg/640     * url : https://mp.weixin.qq.com/s?src=16&ver=520×tamp=1512039617&signature=PpvlaQCpnrKjJVRfgTvFzTjscnrwvsbzP-QrvSlM5ekiaGyU*fX0aJp3YmWM0GaMHC2KbaNnquxYhO466d2xwTzuE7MKM2sVLJey-0rVKd0=     */    @Id(autoincrement = true)//自增    private Long id;//自己加的id    private String ctime;    private String title;    private String description;    private String picUrl;    private String url;    @Generated(hash = 1402622097)    public NewslistBean(Long id, String ctime, String title, String description, String picUrl, String url) {        this.id = id;        this.ctime = ctime;        this.title = title;        this.description = description;        this.picUrl = picUrl;        this.url = url;    }    @Generated(hash = 923354944)    public NewslistBean() {    }    public String getCtime() {        return ctime;    }    public void setCtime(String ctime) {        this.ctime = ctime;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getDescription() {        return description;    }    public void setDescription(String description) {        this.description = description;    }    public String getPicUrl() {        return picUrl;    }    public void setPicUrl(String picUrl) {        this.picUrl = picUrl;    }    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public Long getId() {        return this.id;    }    public void setId(Long id) {        this.id = id;    }    @Override    public String toString() {        return "NewslistBean{" +                "id=" + id +                ", ctime='" + ctime + '\'' +                ", title='" + title + '\'' +                ", description='" + description + '\'' +                ", picUrl='" + picUrl + '\'' +                ", url='" + url + '\'' +                '}';    }}

然后点击 锤子  重新构建,会自动生成dao包下面的类DaoMaster,DaoSession,NewlistBeanDao


新建接口 GitHubService ,

public interface GitHubService {    @GET("/wxnew/?key=18e883dd6b316eb1d97fd86338abbf06&num=10")    Call<OldBean> url();}
Activity.java

public class MainActivity extends AppCompatActivity {    @BindView(R.id.btn)    Button btn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);    }    //按钮的点击事件    @OnClick(R.id.btn)    public void onViewClicked() {        //使用retrofit请求网络数据        Retrofit retrofit = new Retrofit.Builder()                .baseUrl("http://api.tianapi.com")                .addConverterFactory(GsonConverterFactory.create())                .build();        GitHubService gitHubService = retrofit.create(GitHubService.class);        Call<OldBean> call = gitHubService.url();        call.enqueue(new Callback<OldBean>() {            @Override            public void onResponse(Call<OldBean> call, Response<OldBean> response) {                //直接解析了.addConverterFactory(GsonConverterFactory.create())                OldBean oldBean =response.body();             //   System.out.println("oldbean = "+oldBean);                //insertInIx 将集合添加到数据库               IApplication.session.getNewslistBeanDao().insertInTx(oldBean.getNewslist());               //添加完查询一下  loadAll()查询数据库全部内容                List<NewslistBean> list = IApplication.session.getNewslistBeanDao().loadAll();                for (NewslistBean bean : list){                    System.out.println("bean = "+bean.toString());                }            }            @Override            public void onFailure(Call<OldBean> call, Throwable t) {            }        });    }}
控制台打印出来从数据库查询到的内容


数据库的 其他操作

//                List<LoginBean> list = new ArrayList<>();//                for(int i=2;i<10;i++){//                    LoginBean bean = new LoginBean("username " + i,"password");//                    list.add(bean);//                }//                    //insertInTx直接添加集合//                IApplication.session.getLoginBeanDao().insertInTx(list);//                LoginBean bean = new LoginBean(1L,"1509D","1509Dpassword");                          //insert 直接添加bean//                IApplication.session.getLoginBeanDao().insert(bean);//                bean.setUsername("muhanxi");//在数据库中更改//                IApplication.session.getLoginBeanDao().insertOrReplace(bean);//插入或替换,//使用queryBuilder,后面跟着where写查询条件 .list返回一个集合//                QueryBuilder<LoginBean> queryBuilder =  IApplication.session.getLoginBeanDao().queryBuilder().where(LoginBeanDao.Properties.Username.eq("muhanxi"));//                List<LoginBean> list =  queryBuilder.list();                   //delete删除//                IApplication.session.getLoginBeanDao().delete(list.get(0));//                IApplication.session.getLoginBeanDao().delete//                IApplication.session.insert(bean);//                IApplication.session.getLoginBeanDao().insert(bean);//                IApplication.session.getBeanDao().in//                12|username 2|password//                LoginBean bean = new LoginBean(12L,"username 2","password");//                bean.setUsername("update");////                IApplication.session.getLoginBeanDao().update(bean);//                      //                   QueryBuilder<LoginBean> queryBuilder =   IApplication.session.getLoginBeanDao().queryBuilder()//                            .where(LoginBeanDao.Properties.Username.eq("update"),//                                    LoginBeanDao.Properties.Id.eq(12L)); //where语句两个查询条件//////                  List<LoginBean> beans = queryBuilder.list();//////                  for (LoginBean loginBean : beans){//                      System.out.println("loginBean = " + loginBean.toString());//                  }//               QueryBuilder  queryBuilder =  IApplication.session.getLoginBeanDao().queryBuilder() ;////               List<LoginBean> loginBeans =  queryBuilder.where(LoginBeanDao.Properties.Password.eq("password")).list();////                List<LoginBean> off =  queryBuilder.where(LoginBeanDao.Properties.Password.eq("password"))//                        .orderDesc(LoginBeanDao.Properties.Id).offset(3).limit(3).list();//                        //  offset偏移量,limit几条,//                for (LoginBean loginBean : loginBeans){//                      System.out.println("loginBeans = " + loginBean.toString());//                  }////                for (LoginBean loginBean : off){//                    System.out.println("off = " + loginBean.toString());//                }                                                         //queryRawVC在                查询语句//               List<LoginBean> list =  IApplication.session.getLoginBeanDao().queryRaw(" where USERNAME = ?","1");////               for (LoginBean bean : list){//                   System.out.println("bean = " + bean.toString());//               }//              List<Bean> list =    IApplication.session.getBeanDao().queryRaw(" group by SEX");//////              for(Bean bean : list){////                  System.out.println("bean = " + bean.toString());////              }////                List<Bean> list = new ArrayList<>();//                for(int i=0;i<10;i++){////                    list.add()//                    Bean bean = null;//                    if(i % 2 == 0){//                        bean = new Bean("name"+i,"男",i);//                    }else { //                        bean = new Bean("name"+i,"女",i);//                    }//                    list.add(bean);//                }//////                IApplication.session.getBeanDao().insertInTx(list);//////                List<Bean> list1 =  IApplication.session.getBeanDao().loadAll();////                for (Bean bean : list1){//                    System.out.println("bean = " + bean.toString());//                }