首先导入依赖.放上图,在工程的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());
// }