Java/Android(安卓)Annotation processor实践:greendaoannotationprocessor
16lz
2021-01-25
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());}
更多相关文章
- android 在listview上的 gallery 禁止上下滑动
- RatingBar的使用方法
- Android事件分发机制解析
- Android: Gallery的adapter中getView方法被执行多次
- Android(安卓)ViewDragHelper使用介绍
- android IPlog的抓取方法
- Android(安卓)Dialog大全
- Android网络编程
- android 屏保锁中屏掉按键和HOME键的方法