투케이2K

121. (TWOK/UTIL) [Android/Java] - S_Room : Room 라이브러리 DB 앱 데이터 베이스 select , insert , update , delete 본문

투케이2K 유틸파일

121. (TWOK/UTIL) [Android/Java] - S_Room : Room 라이브러리 DB 앱 데이터 베이스 select , insert , update , delete

투케이2K 2023. 9. 6. 20:51

[설 명]

프로그램 : Android / Java

설 명 : S_Room : Room 라이브러리 DB 앱 데이터 베이스 select , insert , update , delete

 

[소스 코드]

 

package com.example.javaproject;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.provider.MediaStore;
import android.util.Log;

import androidx.room.ColumnInfo;
import androidx.room.Dao;
import androidx.room.Database;
import androidx.room.Delete;
import androidx.room.Entity;
import androidx.room.Insert;
import androidx.room.PrimaryKey;
import androidx.room.Query;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.Update;

import java.util.List;


// TODO -----------------------------------------------------------------------------------------
// TODO [테이블 클래스 선언]
// TODO -----------------------------------------------------------------------------------------
@Entity (tableName = "user")
class User {

    @PrimaryKey(autoGenerate = true) // [자동 증가 설정]
    public int idx = 0;

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

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

    public User(String name, String age) { // [autoGenerate] : 인덱스 값 자동 증가로 파라미터값 제외 설정
        this.name = name;
        this.age = age;
    }
}





// TODO -----------------------------------------------------------------------------------------
// TODO [데이터 액세스 객체 DAO : Data Access Object : Mapper]
// TODO -----------------------------------------------------------------------------------------
@Dao
interface UserDao {

    @Query("SELECT * FROM user")
    List<User> getSelectAll();

    @Query("SELECT * FROM user WHERE idx = :idxNum")
    List<User> getIndexUser(int idxNum);

    @Insert
    void insertUser(User user); 

    @Update
    void updateUser(User user); // [쿼리문으로 세부적으로 작성 가능]

    @Delete
    void deleteUser(User user); // [쿼리문으로 세부적으로 작성 가능]

    @Query("DELETE FROM user")
    void deleteAll();

}



// TODO -----------------------------------------------------------------------------------------
// TODO [메인 클래스]
// TODO -----------------------------------------------------------------------------------------
@Database(entities = {User.class}, version = 1, exportSchema = false) // TODO [Single]
//@Database(entities = {User.class, Dept.class}, version = 1, exportSchema = false) // TODO [Multi]
public abstract class S_Room extends RoomDatabase{


    /**
     * // --------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // --------------------------------------------------------------------------------------
     * 1. 모바일 내부 데이터 저장 수행 클래스 (Room 로컬 데이터 베이스)
     * // --------------------------------------------------------------------------------------
     * 2. 라이브러리 추가 방법 (build.gradle) :
     *
     * // [Room 데이터베이스 라이브러리]
     * def room_version = "2.5.0"
     *
     * implementation "androidx.room:room-runtime:$room_version"
     * annotationProcessor "androidx.room:room-compiler:$room_version"
     * // --------------------------------------------------------------------------------------
     * 3. 참고 사이트 :
     *
     * https://developer.android.com/training/data-storage/room?hl=ko#java
     * // --------------------------------------------------------------------------------------
     * // [특정 사용자 삽입]
     * //S_Room.getRoomInstance(A_Intro.this).userDao().insertUser(new User("TWOK", "29"));
     * //S_Room.getRoomInstance(A_Intro.this).userDao().insertUser(new User("투케이", "30"));
     *
     *
     * // [사용자 전체 호출] : new Gson().toJson(users) : 데이터 리스트 확인
     * // List<User> users = S_Room.getRoomInstance(A_Intro.this).userDao().getSelectAll();
     *
     *
     * // [특정 사용자 삭제]
     * //S_Room.getRoomInstance(A_Intro.this).userDao().deleteUser(users.get(3));
     *
     *
     * // [특정 사용자 업데이트]
     * //User user = users.get(1);
     * //user.age = "33";
     * //S_Room.getRoomInstance(A_Intro.this).userDao().updateUser(user);
     *
     *
     * // [전체 사용자 삭제]
     * //S_Room.getRoomInstance(A_Intro.this).userDao().deleteAll();
     * // --------------------------------------------------------------------------------------
     * */





    /**
     * // --------------------------------------------------------------------------------------
     * // TODO [빠른 로직 찾기 : 주석 로직 찾기]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [전역 변수]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [DAO 변수 선언]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [싱글톤 인스턴스 생성]
     * // --------------------------------------------------------------------------------------
     */





    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [전역 변수]
    // -----------------------------------------------------------------------------------------
    private static final String ACTIVITY_NAME = "S_Room"; // [클래스 명칭]
    private static S_Room INSTANCE; // [싱글톤 인스턴스 생성]




    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [DAO 변수 선언]
    // -----------------------------------------------------------------------------------------
    public abstract UserDao userDao();





    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [싱글톤 인스턴스 생성]
    // -----------------------------------------------------------------------------------------
    public static S_Room getRoomInstance(Context mContext){
        if (INSTANCE == null){
            INSTANCE = Room.databaseBuilder(mContext.getApplicationContext(), S_Room.class, ACTIVITY_NAME).allowMainThreadQueries().build();
        }
        return INSTANCE;
    }


} // TODO [클래스 종료]

 

반응형
Comments