天天看點

Xutils架構之DBUtils(DbManager)資料庫增删改查

Xutils的資料庫的簡單使用

1、首先app build.gralde中添加依賴

api 'org.xutils:xutils:3.5.0'
           

2、然後在自定義的Application中初始化

//xutils 初始化
  x.Ext.init(this);
  x.Ext.setDebug(BuildConfig.DEBUG);
           

3、建立資料庫幫助類

/**
 * 資料庫幫助類
 */
public class DatabaseOpenHelper {

    private final String TAG = DatabaseOpenHelper.class.getSimpleName();
    private DbManager.DaoConfig daoConfig;
    private static DbManager dbManager;
    private final String DB_NAME = "contact.db";
    private final int DB_VERSION = 1;

    private DatabaseOpenHelper() {

        daoConfig = new DbManager.DaoConfig()
                .setDbName(DB_NAME)
                .setDbVersion(DB_VERSION)
                .setDbOpenListener(db -> db.getDatabase().enableWriteAheadLogging())
                .setDbUpgradeListener((db, oldVersion, newVersion) -> {

                }).setTableCreateListener((db, table) -> {

                });
        dbManager = x.getDb(daoConfig);
    }

    public static DbManager getInstance() {
        if (dbManager == null) {
            DatabaseOpenHelper databaseOpenHelper = new DatabaseOpenHelper();
        }
        return dbManager;
    }
    
}
           

4、需要儲存到資料庫的實體類

@Table(name = "contact_list") //表名
public class ContactBean implements Serializable {

    @Column(name = "id", isId = true, autoGen = false)// isId是否主鍵,autoGen是否自增長
    private String id;
    @Column(name = "photo")
    private String photo;
    @Column(name = "nickname")
    private String nickname;
    @Column(name = "message_num")
    private int message_num;
    @Column(name = "message")
    private String message;
    @Column(name = "last_time")
    private String last_time;
    @Column(name = "is_read")
    private String is_read;
    @Column(name = "user_id")
    private String user_id;

    //這個一定要有
    public ContactBean() {
    }
    
    //set和get此處省略

}
           

5、建立增删改查的Dao類

public class ContactDao {

    private final String TAG = ContactDao.class.getSimpleName();
    private DbManager dbManager;
    private boolean isSuccess;
    private List<ContactBean> contactList = null;

    public ContactDao() {
        dbManager = DatabaseOpenHelper.getInstance();
    }

    //儲存或者更新聯系人資料
    public void addOrUpdate(ContactBean contactBean) {
        try {
            ContactBean contact = dbManager.findById(ContactBean.class, contactBean.getId());

            if (contact == null) {
                dbManager.save(contactBean);
               
            } else {
                WhereBuilder builder = WhereBuilder.b();

                builder.and("id", "=", contactBean.getId());

                KeyValue key1 = new KeyValue("message", contactBean.getMessage());
                KeyValue key2 = new KeyValue("last_time", contactBean.getLast_time());
                KeyValue key3 = new KeyValue("message_num",         contactBean.getMessage_num());

                dbManager.update(ContactBean.class, builder, key1, key2, key3);
               
            }
           
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    //根據條件查找資料
    public List<ContactBean> getContactAll2() {
        try {
            String user_id = LoginManager.getUserId();
            contactList = dbManager.selector(ContactBean.class).where("user_id",
                    "=", user_id).findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
        return contactList;
    }

    //查找全部資料
    public List<ContactBean> getContactAll() {
        try {
            contactList = dbManager.selector(ContactBean.class).findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
        return contactList;
    }

    public boolean delete(ContactBean contactBean) {
        try {
            dbManager.delete(contactBean);
            isSuccess = true;
        } catch (DbException e) {
            isSuccess = false;
            e.printStackTrace();
        }
        return isSuccess;
    }

    public void close() {
        try {
            dbManager.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}