Java/Android Annotation processor实践:greendaoannotationprocessor

1、关于annotation相关基本知识可以参看android/java 注解

2、该框架源码已上传到GITHUB

3、框架使用

3.1 在app build.gradle脚本中添加如下配置
apt {
    arguments {// 这里的arguments必须以小写字母开头
        appDaoMaster "com.roobo.domgy.db.DaoMaster"
        appDaoSession "com.roobo.domgy.db.DaoSession"
        appSQLiteOpenHelper "com.roobo.domgy.db.DomgySqlHelper"
        appDatabaseName "rooboDb"
        appDatabaseVersion 1
    }
}

task processorTask(type: org.gradle.api.tasks.Copy) {
    from "../greendaoannotationprocessor/build/libs/greendaoannotationprocessor.jar"
    into "libs/"
}

processorTask.dependsOn(':greendaoannotationprocessor:build')
preBuild.dependsOn(processorTask)
3.2 新建一个SQLiteOpenHelper,继承于DomgySqlHelper
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.roobo.domgy.db.DaoMaster;
import com.roobo.domgy.db.DomgySqlHelper;

/**
 * Created by LuoZheng on 2016/7/11.
 */
public class AppSqlHelper extends DomgySqlHelper {

    public AppSqlHelper(Context context) {
        super(context);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        DaoMaster.createAllTables(db,false);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        DaoMaster.dropAllTables(db,false);
        onCreate(db);
    }
}
3.3 创建bean
import com.roobo.greendaoannotationprocessor.Dao;
import com.roobo.greendaoannotationprocessor.DaoProperty;

/**
 * Created by LuoZheng on 2016/7/8.
 */
@Dao("TB_USER")
public class User {
    @DaoProperty(ordinal = 0,isPrimaryKey = true)
    private Long id;// Long类型

    @DaoProperty(ordinal = 1)
    private String nickName;

    @DaoProperty(ordinal = 2)
    private int age;

    private String sex;

    @DaoProperty(ordinal = 3)
    private boolean isMan;

    public User(Long id) {
        this.id = id;
    }

    public User(Long id, String nickName, Integer age, Boolean isMan) {
        this.id = id;
        this.nickName = nickName;
        this.age = age;
        this.isMan = isMan;
    }

    public User(String nickName,int age,boolean isMan) {
        this.nickName = nickName;
        this.age = age;
        this.isMan = isMan;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public boolean getIsMan() {// 注意这里的GET方法
        return isMan;
    }

    public void setIsMan(boolean man) {// 注意这里的SET方法
        isMan = man;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", nickName='" + nickName + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", isMan=" + isMan +
                '}';
    }
}
3.4 使用
AppSqlHelper sqlHelper = new AppSqlHelper(this);
SQLiteDatabase db = sqlHelper.getWritableDatabase();

DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
userDao.insert(new User("张山风",1200,true));
userDao.insert(new User("董小宝",1100,true));
userDao.insert(new User("林心如",40,false));

List users = userDao.loadAll();
for(User user : users){
    LogUtils.v(user.toString());
}

你可能感兴趣的:(Java/Android Annotation processor实践:greendaoannotationprocessor)