GreenDao入门

首先导入依赖.放上图,在工程的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 plugin

android {
    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());
//                }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值