Notice
Recent Posts
Recent Comments
Link
투케이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 [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments