안드로이드 사용 요약 데이터베이스 GreenDao

A, GreenDao 소개

GreenDAO는 ( "객체 / 관계형 매핑"이라한다) ORM에 의해 오픈 소스 안드로이드 ORM ( "객체 / 관계형 매핑"), 그것은 우리에게 시간 데이터베이스 개발 프로세스를 저장!

GreenDao, 우리는 더 빨리 데이터베이스를 조작 할 수 있습니다, 우리는 자바 객체를, 업데이트, 저장, 삭제, 조회 할 수있는 간단한 객체 지향 API를 사용할 수 있습니다.

GreenDao 장점과 단점?

1. 높은 성능

2. 쉬운 관계와 연결을 포함하는 강력한 API를 사용하는

3. 최소 메모리 소비

4. 라이브러리 크기 (<1백킬로바이트)의 방법을 65K 하한 시간을 길게 방지하도록 구성된

5. 데이터베이스 암호화 : greenDAO 지원 SQLCipher는, 사용자 데이터의 보안을 보장하기 위해;

GreenDao 코어 클래스

자신의 생성을 작성할 필요없이, 세 개의 클래스가 자동으로 생성됩니다 즉 DaoMaster, DaoSession, XXXDao : GreenDao는 세 가지 핵심 클래스가!

  • DaoMaster :: DaoMaster 데이터베이스 객체와 DAO 클래스 고유의 패턴을 관리 할 수 ​​있습니다. 그것은 테이블을 생성하거나 삭제하는 정적 메소드가 있습니다. 그것의 내부 클래스 OpenHelper이며 DevOpenHelper SQLiteOpenHelper들은 SQLite 데이터베이스의 패턴을 만드는 것이 실현.
  • DaoSession : 가능한 모든 DAO 객체 관리 특정 패턴, 당신은 객체를 얻기 위해 하나 게터의 방법을 사용할 수 있습니다. DaoSession는 또한 몇 가지 일반적인 지속성 방법, 같은 개체가 삽입 될 때, 부하, 업데이트, 삭제 및 새로 고침을 제공합니다.
  • XXXDao : 데이터 액세스 개체 (DAO) 및 영구 쿼리 엔티티. 각 엔티티에 대한, greenDAO는 DAO를 생성. 그것은 DaoSession 지속성 방법보다 더 있습니다.
  • 엔티티 : 영속 객체합니다. 전형적으로, 표준 자바 특성 (예를 들어, POJO 나 자바빈)을 사용하여 광고의 데이터베이스 엔티티 객체 대표.

두, GreenDao 사용

1. 가져 오기 Gradle을 위젯 코드 생성 및 다오

안드로이드 프로젝트에 GreenDao을 사용하려면 플러그인을 추가하고 GreenDao GreenDao Gradle을 라이브러리를 추가해야합니다 :

A). 가져 오기 위젯

// 在프로젝트的build.gradle文件中添加: 
buildscript { 
    저장소 { 
        jcenter () 
        mavenCentral () // 추가 저장소 
    } 
    의존성 { 
        클래스 경로 'com.android.tools.build:gradle:3.1.2' 
        클래스 패스 'org.greenrobot : greendao-Gradle을-플러그인 : 3.2.2 ' // 플러그인을 추가 
    } 
}

B). 종속성을 구성

// 在Moudle : 응용 프로그램的build.gradle文件中添加: 
'com.android.application'플러그인이 적용 
플러그인을 적용 'org.greenrobot.greendao' //이 플러그인 적용 
 
의존성 { 
    구현 greendao : 3.2 'org.greenrobot을. 2 ' // 라이브러리를 추가 
}

C). 구성 데이터베이스 정보

{greendao 
    SchemaVersion을 . 1 // 데이터베이스 버전 번호 
    daoPackage 'com.renhui.testapp.functions.database.greenDao.db' // 설정 DaoMaster, DaoSession, 다오 패키지 이름 
    targetGenDir 'src.main.java' // 설정 DaoMaster, DaoSession, 다오 디렉토리는,이 경로가. 사용하지 마십시오과 /주의 
    generateTests false로 //가 자동으로 테스트 유닛을 생성하려면 true로 설정합니다. 
    targetGenDirTests '는 SRC는 / 주 / 자바' // 저장되어야 실질적 카탈로그 생성 유닛 테스트. 기본값은 SRC / androidTest / 자바입니다. 
}
 

구성이 완료되면 사용 빌드>, 안드로이드 스튜디오에서 프로젝트 만들기 프로젝트를 빌드 다시는 GreenDao는 통합이 완료됩니다!

2. 스토리지 오브젝트의 엔티티 클래스 만들기

필요한 코드를 생성 GreenDao하자 @Entity 이전 클래스 선언 저장 주석 데이터에 저장된 데이터 만 사용 GreenDao :

@Entity
 공공  클래스 학생 { 
    @Id (AUTOINCREMENT = true로 ) 
    롱은 위의 ID 언급 
    @Unique 
    INT studentNo; // 학생 ID의 
    INT의 시대; // 나이 
    문자열 핸드폰; // 전화 번호 
    문자열 성; // 성별 
    문자열 이름을; // 이름 
    문자열을 해결; // 집 주소 
    문자열 schoolName를; // 학교 이름 
    문자열 학년; // 몇 학년 
    ... getter 및 setter와 생성자 방법, ... 
    }

3. GreenDao 초기화

우리는 응용 프로그램의 글로벌 대화를 유지 관리 할 수 ​​있습니다. 우리는 Applicaiton에서 데이터베이스 작업을 초기화 =

  / ** 
     *初始化GreenDao,直接출원中进行初始化操作在
     * / 
    개인  공극 initGreenDao () { 
        DaoMaster.DevOpenHelper 헬퍼 = 새로운 DaoMaster.DevOpenHelper (  "aserbao.db" ); 
        DB의 SQLiteDatabase = helper.getWritableDatabase (); 
        DaoMaster daoMaster = 새로운 DaoMaster (DB); 
        daoSession = daoMaster.newSession (); 
    } 
    
    개인 DaoSession의 daoSession;
    공공 DaoSession getDaoSession () {
         반환 daoSession; 
    }

초기화가 다시 프로젝트 문서의 세 가지 유형을 생성 targetGenDir 디렉토리의 집합을 무엇을 찾을 것 다시 완료되면,이 GreenDao가 자동으로 생성됩니다! 데이터베이스의 설명은 우리가 라인에 데이터베이스 작업을 검색 변경 추가 및 삭제가 반드시 따라야 할 필요가 연결되어있다.

4. GreenDao는 CRUD 구현

1. 증가

() 삽입 삽입 데이터를

@Override
 공개  공극 insertData (것은 S) { 
    DaoSession daoSession = ((AserbaoApplication) getApplication ()) getDaoSession ().;
    대한 ( int로 , 나는 1000 <내가 + + I = 0 {) 
        학생 학생 = 학생 ()를; 
        student.setStudentNo (I); 
        INT의 나이 = mRandom.nextInt (10) + (10) ; 
        student.setAge (나이); 
        student.setTelPhone (RandomValue.getTel ()); 
        중국인의 성명 문자열 = RandomValue.getChineseName (); 
        student.setName (중국인의 성명); 
        경우 (I % 2 == 0 ) {
            student.setSex ( "男" ); 
        } 다른 { 
            student.setSex ( "女" ); 
        } 
        student.setAddress (RandomValue.getRoad ()); 
        student.setGrade (한 String.valueOf (나이 10 %) + "年纪" ); 
        student.setSchoolName (RandomValue.getSchoolName ()); 
        daoSession.insert (학생); 
    } 
} 

insertOrReplace ()는 데이터를 교체 존재, 데이터가 삽입 존재하지 않습니다

@Override
 공개  공극 insertData (것은 S) { 
    DaoSession daoSession = ((AserbaoApplication) getApplication ()) getDaoSession ().;
    대한 ( int로 , 나는 1000 <내가 + + I = 0 {) 
        학생 학생 = 학생 ()를; 
        student.setStudentNo (I); 
        INT의 나이 = mRandom.nextInt (10) + (10) ; 
        student.setAge (나이); 
        student.setTelPhone (RandomValue.getTel ()); 
        중국인의 성명 문자열 = RandomValue.getChineseName (); 
        student.setName (중국인의 성명); 
        경우 (I % 2 == 0) {
            student.setSex ( "M" ); 
        } 다른 { 
            student.setSex ( "F" ); 
        } 
        student.setAddress (RandomValue.getRoad ()); 
        student.setGrade (한 String.valueOf (나이 10 %) + "오래된" ) ; 
        student.setSchoolName (RandomValue.getSchoolName ()); 
        daoSession.insertOrReplace (학생); // 삽입하거나 교체 
    } 
} 

2. 삭제

각각 모두 삭제 개별 삭제, 삭제 ()와 deleteAll ()가 삭제하는 방법은 두 가지가 있습니다.

@Override
  공개  공극 deleteData (학생 S) { 
     DaoSession daoSession = ((AserbaoApplication) getApplication ()) getDaoSession ().; 
     daoSession.delete (S); 
 } 

 @Override 
 공개  공극 deleteAll () { 
     DaoSession daoSession = ((AserbaoApplication) getApplication ()) getDaoSession ().; 
     daoSession.deleteAll (학생. 클래스 ); 
 }

3. 변경

업데이트로 수정할 수 :

@Override
 공개  공극 updataData (학생 S) { 
    DaoSession daoSession = ((AserbaoApplication) getApplication ()) getDaoSession ().; 
    daoSession.update (S); 
}

4. 찰스

조회하는 방법은 다음과 같습니다 :

  • LOADALL는 () : 모든 데이터를 조회합니다.
  • queryRaw () : 조건 쿼리에 따라.
  • queryBuilder () : 쉽게 자세한 설명은 다음 쿼리를 만듭니다.
공개 목록 queryAll 메 () { 
    목록 <학생> 학생 = daoSession.loadAll (학생. 클래스 );
    반환 학생들; 
} 

@Override 
공공  무효 queryData (문자열들) { 
    목록 <학생> 학생 = daoSession.queryRaw (. 학생 클래스 , "여기서 아이디 =?" ,들); 
    mDataBaseAdapter.addNewStudentData (학생); 
}

 

 


참조 : https://www.jianshu.com/p/53083f782ea2


 

추천

출처www.cnblogs.com/renhui/p/11370600.html