Skip to content

gzeinnumer/RoomJoinExample

Repository files navigation

RoomJoinExample

References

Enable Room with this code Room Java & Room Kotlin

  • Table1
@Entity(tableName = "table_1")
public class Table1 {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public int id;

    @NonNull
    @ColumnInfo(name = "name")
    public String name;
    
    //constructor
    
    //getter setter
}
  • Table2
@Entity(tableName = "table_2")
public class Table2 {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public int id;

    @NonNull
    @ColumnInfo(name = "name")
    public String name;

    @ColumnInfo(name = "table_1_id")
    public int table_1_id;
    
    //constructor
    
    //getter setter
}
  • Table1 Join with Table2
@Dao
public interface Table1Dao {

    @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
public class Table1_Table2 extends Table1 {

    int id2;
    String name2;
    int table_1_id;
    
    //getter setter
}
  • Use on your activity
AppDatabase appDatabase = AppDatabase.getInstance(getApplication());

List<Table1_Table2> list = appDatabase.sampleTable1Dao().getJOin();

for (int i=0; i<list.size(); i++){
    String name1 = list.get(i).getName();
    String name2 = list.get(i).getName2();

    Log.d(TAG, "list: "+i+"_"+name1+"_"+name2);
}
  • Example
public class MainActivity extends AppCompatActivity {
    List<Table1> dataTable1 = new ArrayList<>();
    List<Table2> dataTable2 = new ArrayList<>();

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AppDatabase appDatabase = AppDatabase.getInstance(getApplication());

        dataTable1.add(new Table1(1, "M. Fadli 1"));
        dataTable1.add(new Table1(2, "M. Fadli 2"));
        dataTable1.add(new Table1(3, "M. Fadli 3"));
        dataTable1.add(new Table1(4, "M. Fadli 4"));

        appDatabase.sampleTable1Dao().insertAll(dataTable1);

        dataTable2.add(new Table2(1, "Zein 1", 1));
        dataTable2.add(new Table2(2, "Zein 2",2));
        dataTable2.add(new Table2(3, "Zein 3",3));
        dataTable2.add(new Table2(4, "Zein 4",4));

        appDatabase.sampleTable2Dao().insertAll(dataTable2);

        List<Table1_Table2> list = appDatabase.sampleTable1Dao().getJOin();

        for (int i=0; i<list.size(); i++){
            String name1 = list.get(i).getName();
            String name2 = 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

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages