一.导入依赖
1.在project的gradle下
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
2.在app的gradle下
2.1在最上方
apply plugin: 'org.greenrobot.greendao'
2.2在android{ }里 (此处的包名需要修改成自己的)
greendao {
schemaVersion 1
daoPackage 'com.test.greendao2.gen'
targetGenDir 'src/main/java'
}
2.3在最下边的dependencies { }里
compile 'org.greenrobot:greendao:3.2.0'
二.编写代码
1创建一个实体类User
/**
* @Entity表示这个实体类一会会在数据库中生成对应的表
* @Id表示该字段是id,注意该字段的数据类型为包装类型Long
* @Property则表示该属性将作为表的一个字段
* @Transient,该注解表示这个属性将不会作为数据表中的一个字段
* @NotNull表示该字段不可以为空
* @Unique表示该字段唯一
*
* 成功之后系统会帮助我们生成相应的构造方法和get/set方法,并且还会在我们的包下生成DaoMaster和DaoSession
*/
@Entity
public class User {
@Id
private Long id;
@Property(nameInDb = "USERNAME")
private String username;
@Property(nameInDb = "NICKNAME")
private String nickname;
}
创建之后运行一下项目,成功之后系统会帮助我们生成相应的构造方法和get/set方法,并且还会在我们的包下(gen包)生成DaoMaster和DaoSession
布局我用了4个button按钮,分别是增删改查
然后是进行增删改查的操作了(建议使用ButterKnife,比较简便省事,我懒得再改了)
MainActivity.java
public class MainActivity extends AppCompatActivity {
private UserDao userDao;
private Button badd,bsel,bup,bdel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
badd = (Button) findViewById(R.id.badd);
bsel = (Button) findViewById(R.id.sel);
bup = (Button) findViewById(R.id.update);
bdel = (Button) findViewById(R.id.del);
//数据库的初始化
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "lenve.db", null);
DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());
DaoSession daoSession = daoMaster.newSession();
//获取UserDao
userDao = daoSession.getUserDao();
/*点击事件*/
//添加
badd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Random random = new Random();
User user = new User(null, "zhangsan" + random.nextInt(9999),"张三");
userDao.insert(user);
}
});
//查询
bsel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<User> list = userDao.queryBuilder()
.where(UserDao.Properties.Id.between(2, 13)).limit(5).build().list();
for (int i = 0; i < list.size(); i++) {
Log.d("google_lenve", "search: " + list.get(i).getUsername());
}
}
});
//修改(修改数据先查询,再修改)
bup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
User user = userDao.queryBuilder()
.where(UserDao.Properties.Id.ge(10), UserDao.Properties.Username.like("%90%")).build().unique();
if (user == null) {
Toast.makeText(MainActivity.this, "用户不存在!", Toast.LENGTH_SHORT).show();
}else{
user.setUsername("王五");
userDao.update(user);
}
}
});
//删除(删除数据和修改数据的思路一样,都是要先查找到数据)
bup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<User> userList = (List<User>) userDao.queryBuilder().where(UserDao.Properties.Id.le(10)).build().list();
for (User user : userList) {
userDao.delete(user);
}
}
});
}
}