GreenDao数据库

看了好多篇然后自己整理出来的

第一步:配置gradle相关

①:Project的build.gradle下:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
②:实体类存在的Module的build.gradle下也就是app下面的build.gradle

apply plugin: 'org.greenrobot.greendao'

在android里面写
 
  
*针对greenDao的一些配置*/
    greendao {
        schemaVersion 1 //数据库版本号
               daoPackage 'com.usher.greendao_demo.greendao.gen' //自动生成的工具类的包名
               targetGenDir 'src/main/java' //路径
             }
 
  
dependencies里面写
/*greenDao框架*/
compile 'org.greenrobot:greendao:3.2.0'


第二步写实体类
//辨明该类是持久化的类
@Entity
public class User {
    //选择一个long或long类型的属性
    @Id
    private long id;
    private String name;
    private String age;
   @Generated(hash = 531058479)
public User(long id, String name, String age) {
    this.id = id;
    this.name = name;
    this.age = age;
}
    @Generated(hash = 586692638)
    public User() {
    }
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}
//这是查看http://www.jianshu.com/p/00d93c2d511f这个里面得到的感觉这个用处挺大
greenDao多使用注解,如果你要将某一实体存储到数据库中,需要先对实体进行编写。
@Entity表明该类是持久化的类【持久化含义,存入数据库文件中,作本地化处理】
@Id选择一个long或Long类型的属性作为该实体所对应数据库中数据表的主键【类型要是long】
@Generated写在构造方法前
将以上注解写好后,点击AS上的Make Project即可
然后就会发现自己的项目中多了三个包 
  
第三步:接下来就是操作数据库了
在MainActivity中
//初始化数据库
DaoMaster.DevOpenHelper devopenHelper=new DaoMaster.DevOpenHelper(this,"notes-db",null);
DaoMaster daoMaster=new DaoMaster(devopenHelper.getWritableDatabase());
DaoSession daosession=daoMaster.newSession();
userDao = daosession.getUserDao();
 
  
下面这些一些Button按钮下的操作
 
  
 
  
//添加数据
public void tianjia(View v){
    //实例化一个User对象
    User user=new User(0,"bb","123");
    //然后调用userDao的insert方法就可以了
    userDao.insert(user);
}
//删除数据
public void shanchu(View v){
    //先查询出需要删除的条目
    User user=userDao.queryBuilder().where(UserDao.Properties.Name.eq("bb")).build().unique();
    if(user!=null){
        //然后调用userDao的deleteByKey将该条目的主键传入即可删除
        userDao.deleteByKey(user.getId());
    }

}
//查询数据
public void chaxun(View v){
    // 通过userDao的queryBuilder()方法,生成一个查找构造器
    List userList=userDao.queryBuilder()
            //给构造器添加where条件判断、按照某某字段排序以及查询的条数等基本的数据库操作
            .where(UserDao.Properties.Id.notEq(1))
            .orderAsc(UserDao.Properties.Id)
            .limit(5)//分页查询
            .build().list();//list()方法表示查询的结果为一个集合


    System.out.println("+++++++++++++++++"+userList);
}
//修改数据
public void xiugai(View v){
    //修改数据的第一步是把需要修改的条目给查询出来
    User user=userDao.queryBuilder().where(UserDao.Properties.Name.eq("bb")).build().unique();
    if(user!=null){
      user.setName("mm");
        //调用userDao的update方法即可
        userDao.update(user);
        Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(MainActivity.this, "数据库为空", Toast.LENGTH_SHORT).show();
    }
}
还从网上看到的一个自定义sql语句的没试验过
   ChatHistoryDao dao = GreenDaoManager.getInstance().getSession().getChatHistoryDao();  
   Cursor cursor = dao.getDatabase().rawQuery("select t.sales_wx_nick_name,t.wx_nick_name,count(*),t.talker_id,t.sales_wx_account from chat_history t group by t.talker_id,t.sales_wx_account order by t.created_at desc"null);  
   while (cursor.moveToNext()) 
{  
   String salesWxNickName = cursor.getString(0);  
   String clientWxNickName = cursor.getString(1);  
   int chatCount = cursor.getInt(2);  
   int talkerId = cursor.getInt(3);  
   String salesWxAccount = cursor.getString(4);
}  
有的时候需要用到group by或者left join等复杂的语句,可以调用android原生的sqlite去进行查询



 
  

你可能感兴趣的:(GreenDao数据库)