一.GreenDao概述:

    greenDAO 是一个可以帮助 Android 开发者快速将 Java 对象映射到 SQLite 数据库表单中的 ORM 解决方案。greenDAO的特点运行效率最高、内存消耗最少,官网:http://greendao-orm.com/。。。github下载地址:https://github.com/greenrobot/greenDAO。

     

Android GreenDao能导出数据么_android项目

1、  DaoCore:greenDAO的核心库。
2、  DaoExample:greenDAO使用范例项目。
3、  DaoExampleGenerator:greenDAO使用范例的实体类及DAO组件的生成器项目。
4、  DaoGenerator:greenDAO的DAO组件生成器项目。
5、  DaoTest:greenDAO的测试项目。
6、  PerformanceTestOrmLite:ormlite框架性能测试项目

二.生成GreenDao框架:

在使用之前要下载greendao-generator.jar和freemarker.jar两个包,freemarker需要这个来生成java文件,来看具体怎么使用:

(1).首先生成一个java项目(不是android项目),然后将上面greendao-generator.jar和freemarker.jar导入java项目。

Android GreenDao能导出数据么_android项目_02

生成一个类,名字随便取:我得命名DaoGeneratorTest:

<span style="font-size:18px;">public class DaoGeneratorTest {
	public static void main(String[] args) throws Exception {  
		//第一个参数是数据库版本号,第二个是自动生成包的路径
        Schema schema = new Schema(1, "de.greenrobot.daoexample");  
        
        addNote(schema); 
        //生成路径,就是在什么目录下生成这个文件,我的路径是在一个新建android项目src-gen目录下
        new DaoGenerator().generateAll(schema, "../AndroidTestGreenDao/src-gen");  
    }  
    private static void addNote(Schema schema) {
    	//Entity是一个实体,实体类名为Note
        Entity note = schema.addEntity("Note");  
        //主键,设置自增长可在后面家.autoincrement()
        note.addIdProperty();  
        //实体类中的属性(也就是表中的字段),不能为空,其他设置看下方法名就能知道什么意思了
        note.addStringProperty("text").notNull();  
        note.addStringProperty("comment");  
        note.addDateProperty("date");  
    }  
}</span>



而且要注意:src-gen要先创建好,才能成功。

生成成功:

Android GreenDao能导出数据么_android_03


Schema类:可以看成一个存放实体的容器。

Entity类:可用于将实体类映射到对应的表。

DaoGenerator:实体类和DAO组件的生成器,generateAll根据schema和目录参数,首先生成文件存放目录,并从schema中取出所有entity,根据freemaker模板生成对应的实体了和DAO组件。


三.使用GreenDao框架:

创建一个android项目,我得android项目名为(我上面java指定的路径就是这个项目下):AndroidTestGreenDao

Android GreenDao能导出数据么_jar_04

这里greendao-1.3.0-beta-1.jar在github下载的DaoExample目录下libs下拿出来的。

创建数据库:


public class MainActivity extends Activity {

	private SQLiteDatabase db;
	private DaoMaster master;
	private DaoSession session;
	private NoteDao noteDao;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
        //创建数据库名为notes-db
		DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db",
				null);
		db = helper.getWritableDatabase();
		
		master = new DaoMaster(db);
		
		session = master.newSession();
		
		noteDao = session.getNoteDao();
                //添加一条数据
		Note note = new Note(10L, "1", "1", new Date());
		noteDao.insert(note);
		
	}
	
}




Note:实体对象,映射到表NOTE。

NoteDAO:通过代码可知此类提供了生成建表、和删表的方法,并类继承了AbstractDao(greenDAO核心类之一,封装了操作表中数据的各种方法)。

DaoMaster:继承自AbstractDaoMaster,用于创建数据库,并管理数据库连接。

DaoSession:继承自AbstractDaoSession,所有DAO对象的入口,通过此类可获得实体了的DAO组件。