1.为什么需要GreenDao?Google原生API不方便
@1手动组拼SQL语句
@2需要自己写操作数据库代码
@3不能把数据库中的数据映射成对象
@4没有实现关联查询
2.GreenDao是什么?
开源的数据库操作框架,让操作数据库变为操作对象
3.GreenDao的优点?
@1让业务代码访问对象,而不是操作数据库表
@2隐藏了面向对象的逻辑SQL查询详情
@3无须处理数据库实现
4.ANDROID主流ORM框架
@1 OrmLite
@2 SugarORM
@3 LitePal
@4 GreenDao
.
5.GreenDao自动生成代码
@1创建java工程,引入两个jar包
@2创建类,引入代码如下
import java.io.IOException; import de.greenrobot.daogenerator.DaoGenerator; import de.greenrobot.daogenerator.Entity; import de.greenrobot.daogenerator.Schema; public class GenerateGreenDao { public static void main(String[] args) { // TODO Auto-generated method stub Schema schema = new Schema(1, "de.greenrobot.daoexample");//第一个参数:版本号,第二个参数生成的代码的包名 Entity note= schema.addEntity("Person");//生成的表名 note.addIdProperty();//增加id字段 note.addStringProperty("name").notNull();//增加name字段 note.addIntProperty("age");//增加age字段 note.addStringProperty("sex");//sex字段 note.addDateProperty("date");//date字段 try { new DaoGenerator().generateAll(schema, "../greendaogenerate/src"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
@3编译并运行上述代码,查看结果,生成四个类,以后需要将这四个类拷贝到android工程中
6.使用GreenDao的API
@1初始化数据库
private void openDB() { // do this once, for example in your Application class DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this, "person.db", null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); // do this in your activities/fragments to get hold of a DAO dao = daoSession.getPersonDao(); }
@2增加
//增加 public void save(){ //要插入的对象 Person person = new Person(Long.valueOf(1),name.getText().toString(),Integer.valueOf(age.getText().toString()),"women",new Date()); //执行插入 dao.insert(person); //清空输入框 name.setText(""); age.setText(""); Log.i("person","personid"+person.getId()); }
@3修改
public void update(Person p){ dao.insertOrReplace(p); }
@4删除
public void delete(Person p){ dao.delete(p); }
@5查询
//查询所有 public void getAll(){ List<Person> list = dao.queryBuilder().list(); for(Person p:list){ Log.v("Person",p.toString()); } Person person = list.get(0); person.setSex("man"); update(person); }
需要程序源码的可以加我微信x241602私聊。