一:greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案
GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码
二:依赖
Project里加入,不是项目里的而是工程里的gradle
buildscript {
repositories {
jcenter()
mavenCentral() ///
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
项目gradle
最上面添加:apply plugin: 'org.greenrobot.greendao'
dependencies下添加:compile 'org.greenrobot:greendao:3.2.2'
greendao{
schemaVersion 1
daoPackage 'com.greendao.gen'//自己的包名
targetGenDir 'src/main/java'
}
添加完之后,Build MakeProject构建一下,生成相应代码
三:使用
1:创建Person类,添加上注解之后Build Make Module 'GreenDao' 生成相应代码
@Entity public class Person { @Id private Long id; private String name; private int age; @Generated(hash = 1145075130) public Person(Long id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Generated(hash = 1024547259) public Person() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
2:创建类做数据库初始化工作public class DbHelper { private static volatile DbHelper instance; private final DaoSession daoSession; private DbHelper(Context context) { //初始化数据库的配置 DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context,"user",null); //获取数据库操作对象 SQLiteDatabase db = helper.getWritableDatabase(); //获取DaoMaster对象 DaoMaster daoMaster = new DaoMaster(db); //获取DaoSession对象 daoSession = daoMaster.newSession(); } public static DbHelper getInstance(Context context) { if (instance == null) { synchronized (DbHelper.class) { if (null == instance) { instance = new DbHelper(context); } } } return instance; } public PersonDao getPersonDao() { return daoSession.getPersonDao(); } }
3:使用增删改查public class MainActivity extends AppCompatActivity { @BindView(R.id.btn_add) Button btnAdd; @BindView(R.id.btn_delete) Button btnDelete; @BindView(R.id.btn_update) Button btnUpdate; @BindView(R.id.btn_selete) Button btnSelete; private PersonDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); //拿到要操作的对象 dao = DbHelper.getInstance(this).getPersonDao(); } @OnClick({R.id.btn_add, R.id.btn_delete, R.id.btn_update, R.id.btn_selete}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn_add: Person person = new Person(); person.setName("张三"); person.setAge(23); dao.insert(person); break; case R.id.btn_delete: Person person1 = new Person(); person1.setId(5L); dao.delete(person1); break; case R.id.btn_update: Person person2 = new Person(6L, "lisi", 24); dao.update(person2); break; case R.id.btn_selete: //List<Person> person3 = dao.queryRaw("where _id=? and name=?", "1","张三");//条件查询 List<Person> person3 = dao.loadAll();//查询全部 for(int i=0;i<person3.size();i++){ Log.i("TAG",person3.get(i).toString()); } break; } } }