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