GreenDao是一款优秀的Android ORM框架。相比其他框架GreenDao有着使用方便,效率高的特点。这里关于GreenDao的详细介绍和性能对比这里我们不讨论,毕竟到处都是。本文这里权当GreenDao使用入门,当然你也可以自己通过Android自带API从头到尾写数据库创建语句,写增删改查DAO。另外DbFlow也是很容易入门的,客官也可以去了解一下。
配置GreenDao
初始化GreenDao
public class MyAPP extends Application {
private static DaoSession daoSession;
private static DaoMaster daoMaster;
@Override
public void onCreate() {
super.onCreate();
initDbMaster();
}
private void initDbMaster() {
DaoMaster.DevOpenHelper test_userhelp = new DaoMaster.DevOpenHelper(this, "test_userhelp");
SQLiteDatabase writableDatabase = test_userhelp.getWritableDatabase();
daoMaster = new DaoMaster(writableDatabase);
daoSession = daoMaster.newSession();
}
public static DaoSession getDbSession(){
if(daoSession != null) {
return daoSession;
}
return null;
}
public static DaoMaster getDaoMaster(){
if(daoMaster != null){
return daoMaster;
}
return null;
}
}
- 使用GreenDao
@Entity(nameInDb = "TEST_USER")
public class User {
//id为主键自增
@Id(autoincrement = true)
private Long id;
@Property(nameInDb = "NAME")
private String userName;
private Integer age;
private String addr;
}
private UserDao userDao;
private int count;
private TextView tb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button addb = (Button) findViewById(R.id.btn_greendao);
Button qb = (Button) findViewById(R.id.btn_greendao_query);
tb = (TextView) findViewById(R.id.tv_helloword);
addb.setOnClickListener(this);
qb.setOnClickListener(this);
count =1;
userDao = MyAPP.getDbSession().getUserDao();
}
private long insert() {
return userDao.insert(new User(null, "nikon"+count++, 30, "liuyang"));
}
private ArrayList<String> getUserFromDb(UserDao dao) {
ArrayList<String> names = new ArrayList<>();
List<User> users = dao.loadAll();
for(User u : users){
String userName = u.getUserName();
names.add(userName);
}
return names;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_greendao:
long insert = insert();
Toast.makeText(MainActivity.this, "插入结果"+insert, Toast.LENGTH_SHORT).show();
break;
case R.id.btn_greendao_query:
ArrayList<String> userFromDb = getUserFromDb(userDao);
Toast.makeText(MainActivity.this, "查询结果"+userFromDb.toString(), Toast.LENGTH_SHORT).show();
tb.setText(userFromDb.toString());
break;
default:
break;
}
}