Notice
Recent Posts
Recent Comments
Link
투케이2K
636. (Android/Java) [라이브러리] 안드로이드 Room 라이브러리 사용해 데이터 update 수정 방법 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
---------------------------------------------------------------------------------
[build.gradle 라이브러리 추가 방법]
def room_version = "2.5.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
---------------------------------------------------------------------------------
[소스 코드]
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 {
@Update
void updateUser(User user); // [쿼리문으로 세부적으로 작성 가능]
}
// TODO -----------------------------------------------------------------------------------------
// TODO [메인 클래스]
// TODO -----------------------------------------------------------------------------------------
@Database(entities = {User.class}, version = 1, exportSchema = false) // TODO [Single]
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
* // --------------------------------------------------------------------------------------
* // [사용자 전체 호출] : new Gson().toJson(users) : 데이터 리스트 확인
* // List<User> users = S_Room.getRoomInstance(A_Intro.this).userDao().getSelectAll();
*
*
* // [특정 사용자 업데이트]
* //User user = users.get(1);
* //user.age = "33";
* //S_Room.getRoomInstance(A_Intro.this).userDao().updateUser(user);
* // --------------------------------------------------------------------------------------
* */
/**
* // --------------------------------------------------------------------------------------
* // 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 [클래스 종료]
반응형
'Android' 카테고리의 다른 글
Comments