GreenDao数据库

来源:互联网 发布:弓箭手升级数据 编辑:程序博客网 时间:2024/06/02 02:23

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

第一步:配置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'
第二步写实体类
//辨明该类是持久化的类@Entitypublic 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<User> 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去进行查询


原创粉丝点击