greenDao的配置这里就不介绍了,网上一搜都是,重点写了一个类似于方法的便利调用
断点续传https://www.cnblogs.com/cainiaodongdong/p/7880723.html
User类
@Entity
public class User {
@Id
private Long id;
@Property
private String name;
@Property
private String age;
public String getAge() {
return this.age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@Generated(hash = 1666193281)
public User(Long id, String name, String age) {
this.id = id;
this.name = name;
this.age = age;
}
@Generated(hash = 586692638)
public User() {
}
}
db包
public class DBManager {
private final static String dbName="test_db";
private static DBManager mInstance;
private DaoMaster.DevOpenHelper openHelper;
private Context context;
public DBManager(Context context) {
this.context = context;
openHelper=new DaoMaster.DevOpenHelper(context,dbName,null);
}
// 单例引用
public static DBManager getInstance(Context context){
if(mInstance==null){
synchronized (DBManager.class){
if(mInstance==null){
mInstance=new DBManager(context);
}
}
}
return mInstance;
}
public SQLiteDatabase getReadableDatabase(){
if(openHelper==null){
openHelper=new DaoMaster.DevOpenHelper(context,dbName,null);
}
SQLiteDatabase db=openHelper.getReadableDatabase();
return db;
}
public SQLiteDatabase getWritableDatabase(){
if(openHelper==null){
openHelper=new DaoMaster.DevOpenHelper(context,dbName,null);
}
SQLiteDatabase db=openHelper.getWritableDatabase();
return db;
}
}
dao包
public class MyUserDao {
Context context;
public MyUserDao(Context context) {
this.context = context;
}
//插入一条记录
public void insertUser(User user){
DaoMaster daoMaster=new DaoMaster(DBManager.getInstance(context).getWritableDatabase());
DaoSession daoSession=daoMaster.newSession();
UserDao userDao=daoSession.getUserDao();
userDao.insert(user);
}
//插入用户集合
public void insertUserList(List<User> users){
if(users==null||users.isEmpty()){
return;
}
DaoMaster daoMaster=new DaoMaster(DBManager.getInstance(context).getWritableDatabase());
DaoSession daoSession=daoMaster.newSession();
UserDao userDao=daoSession.getUserDao();
userDao.insertInTx(users);
}
//查询所有用户列表
public List<User> queryUserList(){
DaoMaster daoMaster=new DaoMaster(DBManager.getInstance(context).getReadableDatabase());
DaoSession daoSession=daoMaster.newSession();
UserDao userDao=daoSession.getUserDao();
QueryBuilder<User> qb=userDao.queryBuilder();
List<User> list=qb.list();
return list;
}
//查询用户列表
public List<User> queryUserList(int age){
DaoMaster daoMaster=new DaoMaster(DBManager.getInstance(context).getReadableDatabase());
DaoSession daoSession=daoMaster.newSession();
UserDao userDao=daoSession.getUserDao();
QueryBuilder<User> qb=userDao.queryBuilder();
qb.where(UserDao.Properties.Age.gt(age)).orderAsc(UserDao.Properties.Age);
List<User> list=qb.list();
return list;
}
//更新一条记录
public void updateUser(User user){
DaoMaster daoMaster=new DaoMaster(DBManager.getInstance(context).getWritableDatabase());
DaoSession daoSession=daoMaster.newSession();
UserDao userDao=daoSession.getUserDao();
userDao.update(user);
}
//删除一条记录
public void deleteUser(User user){
DaoMaster daoMaster=new DaoMaster(DBManager.getInstance(context).getWritableDatabase());
DaoSession daoSession=daoMaster.newSession();
UserDao userDao=daoSession.getUserDao();
userDao.delete(user);
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private MyUserDao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dao = new MyUserDao(this);
for (int i = 0; i < 5; i++) {
User user=new User();
user.setId(Long.valueOf(i));
user.setAge(i*3+"");
user.setName("第"+i+"人");
dao.insertUser(user);
}
List<User> userList=dao.queryUserList();
for (User user:userList) {
Log.e("TAG", "queryUserList--before-->" + user.getId() + "--" + user.getName() +"--"+user.getAge());
if(user.getId()==0){
dao.deleteUser(user);
}
if(user.getId()==3){
user.setAge(25+"");
dao.updateUser(user);
}
}
userList =dao.queryUserList();
for (User user:userList){
Log.e("TAG", "queryUserList--after--->" + user.getId() + "---" + user.getName()+"--"+user.getAge());
}
}
}
效果图
11-23 11:00:11.639 3477-3477/? E/TAG: queryUserList--before-->0--第0人--0
11-23 11:00:11.641 3477-3477/? E/TAG: queryUserList--before-->1--第1人--3
11-23 11:00:11.642 3477-3477/? E/TAG: queryUserList--before-->2--第2人--6
11-23 11:00:11.642 3477-3477/? E/TAG: queryUserList--before-->3--第3人--9
11-23 11:00:11.648 3477-3477/? E/TAG: queryUserList--before-->4--第4人--12
11-23 11:00:11.650 3477-3477/? E/TAG: queryUserList--after--->1---第1人--3
11-23 11:00:11.650 3477-3477/? E/TAG: queryUserList--after--->2---第2人--6
11-23 11:00:11.650 3477-3477/? E/TAG: queryUserList--after--->3---第3人--25
11-23 11:00:11.650 3477-3477/? E/TAG: queryUserList--after--->4---第4人--12