android #room #db #sqlite
implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
User user = new User();
user.firstName = "a";
user.lastName = "b";
MyDatabase.getInstance(DbWorksActivity.this)
.getUserDao().InsertUser(user);
}});
@Entity(tableName = "users")
public class User {
@PrimaryKey(autoGenerate = true)
public int id;
@ColumnInfo(name = "user_first_name")
public String firstName;
@ColumnInfo(name = "user_last_name")
public String lastName;
}
@Database(entities = {User.class,Reop.class, UserReopJoin.class}, version = 1)
public abstract class MyDatabase extends RoomDatabase {
private static final String DB_NAME = "myDatabase.db";
private static volatile MyDatabase instance;
static synchronized MyDatabase getInstance(Context context) {
if (instance == null) {
instance = create(context);
}
return instance;
}
private static MyDatabase create(final Context context) {
return Room.databaseBuilder(
context,
MyDatabase.class,
DB_NAME)
.fallbackToDestructiveMigration()
.build();
}
public abstract UserDao getUserDao();
public abstract ReopDao getReopDao();
public abstract UserReopJoinDao getUserReopJoinDao();
}
@Dao
public interface UserDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
public void InsertUser(User user);
@Insert(onConflict = OnConflictStrategy.REPLACE)
public void InsertUserList(List<User> user);
@Insert(onConflict = OnConflictStrategy.REPLACE)
public void InserstUserList(User... user);
@Delete
public void DeleteUser(User user);
@Update
public void UpdateUser(User user);
@Query("SELECT * FROM users WHERE id = :id")
public User SelectById(int id);
@Query("SELECT * FROM users WHERE user_first_name = :fname")
public User SelectById(String fname);
@Query("SELECT * FROM users ")
public List<User> SelectAllUsers();
}