看了好多篇然后自己整理出来的
第一步:配置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()方法,生成一个查找构造器 ListuserList=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去进行查询