android - Room的使用教程

room的集成

添加依赖

api 'androidx.room:room-runtime:2.2.3'
annotationProcessor 'androidx.room:room-compiler:2.2.3'

第一步:首先创建一个表结构:

/**
 * Created by malei on 2019-12-20
 * Describe:
 */
@Entity(tableName = UserTable.TABLE)
public class UserTable {

    public static final String TABLE = "user_table";

    @PrimaryKey  //定义主键
    public long id;

    @ColumnInfo(name = "name") //定义数据表中的字段名
    public String name;
    @ColumnInfo(name = "sex")
    public String sex;
    @Ignore         //指示Room需要忽略的字段或方法
    public String ignoreText;

    @Override
    public String toString() {
        return "UserTable{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", ignoreText='" + ignoreText + '\'' +
                '}';
    }
}

第二步:dao结构

/**
 * Created by malei on 2019-12-20
 * Describe:
 */
@Dao
public interface UserDao {


    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insertUsers(UserTable... entities);

    @Update(onConflict = OnConflictStrategy.REPLACE)
    int updateUsers(UserTable... users);

    @Query("SELECT * FROM " + UserTable.TABLE + " WHERE id LIKE :id")
    UserTable find(long id);

    @Delete
    void deleteUsers(UserTable... users);


    @Query("SELECT * FROM "+ UserTable.TABLE)
    UserTable[] findAllUsers();

    @Query("SELECT * FROM "+ UserTable.TABLE + " WHERE name LIKE :name " )
    List<UserTable> findUserByName(String name);
}

第三步:创建一个 RoomDatabase实例:

/**
 * Created by malei on 2019-12-20
 * Describe:返回数据库表的持有者
 */
@Database(entities = {UserTable.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {

    public abstract UserDao userDao();
}

第四步:封装工具类:

/**
 * Created by malei on 2019-12-20
 * Describe:
 */
public class RoomFactory {

    private static final String DB_NAMWE = "mydatabase.db";

    public volatile static AppDatabase mAppDatabase;

    private RoomFactory() {
    }

    private static class Holder {
        private static RoomFactory instance = new RoomFactory();
    }

    public static RoomFactory getInstance() {
        return Holder.instance;
    }

    public void init(Application application) {
        mAppDatabase = Room.databaseBuilder(application, AppDatabase.class, DB_NAMWE)
                .allowMainThreadQueries() //支持主线程
                .build();
    }

    public AppDatabase getDatabase(){
        return RoomFactory.mAppDatabase;
    }
}

stetho的集成

在gradle中配置dependencies:

dependencies {
// Stetho core
compile 'com.facebook.stetho:stetho:1.3.1'
//If you want to add a network helper
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
}

自定义一个MyApplication继承Application,在onCreate中初始化stetho:

public class MyApplication extends Application {
 
    @Override
    public void onCreate() {
        super.onCreate();
        init();
    }
 
    private void init(){
        Stetho.initializeWithDefaults(this);
        new OkHttpClient.Builder()
                .addNetworkInterceptor(new StethoInterceptor())
                .build();
    }
}

接着运行app到手机上。

然后打开chrome,输入网址chrome://inspect

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值