Skip to content

Repository files navigation

RoomJoinExample

References

Enable Room with this code Room Java & Room Kotlin

  • Table1
@Entity(tableName = "table_1")
publicclassTable1 {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
publicintid;
@NonNull@ColumnInfo(name = "name")
publicStringname;
//constructor//getter setter
}
  • Table2
@Entity(tableName = "table_2")
publicclassTable2 {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
publicintid;
@NonNull@ColumnInfo(name = "name")
publicStringname;
@ColumnInfo(name = "table_1_id")
publicinttable_1_id;
//constructor//getter setter
}
  • Table1 Join with Table2
@DaopublicinterfaceTable1Dao {
@Query("SELECT " +
"table_1.id, " +
"table_1.name, " +
"table_2.id as id2, " +
"table_2.name as name2, " +
"table_2.table_1_id " +
"FROM table_1 " +
"LEFT JOIN table_2 ON table_2.table_1_id = table_1.id;")
List<Table1_Table2> getJOin();
}
  • Joined Entity
publicclassTable1_Table2extendsTable1 {
intid2;
Stringname2;
inttable_1_id;
//getter setter
}
  • Use on your activity
AppDatabaseappDatabase = AppDatabase.getInstance(getApplication());
List<Table1_Table2> list = appDatabase.sampleTable1Dao().getJOin();
for (inti=0; i<list.size(); i++){
Stringname1 = list.get(i).getName();
Stringname2 = list.get(i).getName2();
Log.d(TAG, "list: "+i+"_"+name1+"_"+name2);
}
  • Example
publicclassMainActivityextendsAppCompatActivity {
List<Table1> dataTable1 = newArrayList<>();
List<Table2> dataTable2 = newArrayList<>();
privatestaticfinalStringTAG = "MainActivity";
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppDatabaseappDatabase = AppDatabase.getInstance(getApplication());
dataTable1.add(newTable1(1, "M. Fadli 1"));
dataTable1.add(newTable1(2, "M. Fadli 2"));
dataTable1.add(newTable1(3, "M. Fadli 3"));
dataTable1.add(newTable1(4, "M. Fadli 4"));
appDatabase.sampleTable1Dao().insertAll(dataTable1);
dataTable2.add(newTable2(1, "Zein 1", 1));
dataTable2.add(newTable2(2, "Zein 2",2));
dataTable2.add(newTable2(3, "Zein 3",3));
dataTable2.add(newTable2(4, "Zein 4",4));
appDatabase.sampleTable2Dao().insertAll(dataTable2);
List<Table1_Table2> list = appDatabase.sampleTable1Dao().getJOin();
for (inti=0; i<list.size(); i++){
Stringname1 = list.get(i).getName();
Stringname2 = list.get(i).getName2();
Log.d(TAG, "list: "+i+"_"+name1+"_"+name2);
}
}
}

Example Project

  • Preview

Copyright 2020 M. Fadli Zein

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages