如何将 Greendao 与 sqlcipher 集成
How to integrate Greendao with sqlcipher
我想在 android studio 中集成 Greendao 和 Sqlcipher 以获得加密数据库。我用 sqlcipher-for-android
我将这些添加到我的 app/build。gradle
compile 'org.greenrobot:greendao:3.2.0'
compile 'org.greenrobot:greendao-generator:3.2.0'
compile 'net.zetetic:android-database-sqlcipher:3.5.6@aar'
我从 Here 下载了 v3.5.6
在第二步中,我必须执行这些命令
% unzip sqlcipher-for-android-v3.5.6.zip
% mkdir -p app/libs
% cp sqlcipher-for-android-v3.5.6/sqlcipher.jar app/libs
% cp -r sqlcipher-for-android-v3.5.6/armeabi \
sqlcipher-for-android-v3.5.6/armeabi-v7a \
sqlcipher-for-android-v3.5.6/x86
sqlcipher-for-android-v3.5.6/x86_64 \
sqlcipher-for-android-v3.5.6/arm64_v8a app/src/main/jniLibs/
但是压缩文件中没有 sqlcipher.jar、armeabi、armeabi-v7a、x86 和...
我是不是遗漏了什么或做错了什么?
请帮忙
将其与 example 进行比较解决了问题
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
android {
buildToolsVersion '25.0.2'
compileSdkVersion 25
defaultConfig {
applicationId "org.greenrobot.greendao.example"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "3"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
}
greendao {
schemaVersion 1000
}
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
// This is only needed if you want to use encrypted databases
compile 'net.zetetic:android-database-sqlcipher:3.5.6'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
}
uploadArchives.enabled = falseapply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
android {
buildToolsVersion '25.0.2'
compileSdkVersion 25
defaultConfig {
applicationId "org.greenrobot.greendao.example"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "3"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
}
greendao {
schemaVersion 1000
}
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
// This is only needed if you want to use encrypted databases
compile 'net.zetetic:android-database-sqlcipher:3.5.6'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
}
uploadArchives.enabled = false
和下面的代码:
package org.greenrobot.greendao.example;
import android.app.Application;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.example.DaoMaster.DevOpenHelper;
public class App extends Application {
/** A flag to show how easily you can switch from standard SQLite to the
encrypted SQLCipher. */
public static final boolean ENCRYPTED = true;
private DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
DevOpenHelper helper = new DevOpenHelper(this, ENCRYPTED ? "notes-db-encrypted" : "notes-db");
Database db = ENCRYPTED ? helper.getEncryptedWritableDb("super-secret") : helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
要读取和修改数据,我有一个基础存储库
首先是我的实体:
//Category.java
package Entities;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Generated;
@org.greenrobot.greendao.annotation.Entity(
nameInDb = "Categories"
)
public class Category {
@Id
public Long CategoryId;
@NotNull
public String Name;
public String Description;
@Generated(hash = 1903625692)
public Category(Long CategoryId, @NotNull String Name, String Description) {
this.CategoryId = CategoryId;
this.Name = Name;
this.Description = Description;
}
@Generated(hash = 1150634039)
public Category() {
}
public Long getCategoryId() {
return this.CategoryId;
}
public void setCategoryId(Long CategoryId) {
this.CategoryId = CategoryId;
}
public String getName() {
return this.Name;
}
public void setName(String Name) {
this.Name = Name;
}
public String getDescription() {
return this.Description;
}
public void setDescription(String Description) {
this.Description = Description;
}
}
和User.java
package Entities;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Generated;
@org.greenrobot.greendao.annotation.Entity(
nameInDb = "Users"
)
public class User {
@Id
public Long UserId;
public String Username;
public String Mobile;
@NotNull
public String UserApiKey;
@NotNull
public String SecretKey;
public String FirstName;
public String LastName;
public boolean IsFirstLogin;
@Generated(hash = 1246565860)
public User(Long UserId, String Username, String Mobile,
@NotNull String UserApiKey, @NotNull String SecretKey, String FirstName,
String LastName, boolean IsFirstLogin) {
this.UserId = UserId;
this.Username = Username;
this.Mobile = Mobile;
this.UserApiKey = UserApiKey;
this.SecretKey = SecretKey;
this.FirstName = FirstName;
this.LastName = LastName;
this.IsFirstLogin = IsFirstLogin;
}
@Generated(hash = 586692638)
public User() {
}
public Long getUserId() {
return this.UserId;
}
public void setUserId(Long UserId) {
this.UserId = UserId;
}
public String getUsername() {
return this.Username;
}
public void setUsername(String Username) {
this.Username = Username;
}
public String getMobile() {
return this.Mobile;
}
public void setMobile(String Mobile) {
this.Mobile = Mobile;
}
public String getUserApiKey() {
return this.UserApiKey;
}
public void setUserApiKey(String UserApiKey) {
this.UserApiKey = UserApiKey;
}
public String getSecretKey() {
return this.SecretKey;
}
public void setSecretKey(String SecretKey) {
this.SecretKey = SecretKey;
}
public String getFirstName() {
return this.FirstName;
}
public void setFirstName(String FirstName) {
this.FirstName = FirstName;
}
public String getLastName() {
return this.LastName;
}
public void setLastName(String LastName) {
this.LastName = LastName;
}
public boolean getIsFirstLogin() {
return this.IsFirstLogin;
}
public void setIsFirstLogin(boolean IsFirstLogin) {
this.IsFirstLogin = IsFirstLogin;
}
}
和BaseRepository.java
package services;
import org.greenrobot.greendao.AbstractDao;
import org.greenrobot.greendao.query.DeleteQuery;
import org.greenrobot.greendao.query.WhereCondition;
import java.util.ArrayList;
import java.util.List;
import Entities.DaoSession;
import ir.swifttips.fidiboo.MainDbContext;
import Interfaces.IBaseRepository;
/**
* Created by macintosh on 1/20/18.
*/
public class BaseRepository<T> implements IBaseRepository<T> {
Class<T> type;
public AbstractDao<T, ?> dao;
public BaseRepository(Class<T> _type) {
type = _type;
DaoSession daoSession = MainDbContext.getDaoSession();
dao = (AbstractDao<T, ?>) daoSession.getDao(_type);
}
public Boolean Create(T entity)
{
dao.insert(entity);
return true;
}
public void Update(T entity)
{
dao.update(entity);
}
public boolean Delete(Long id)
{
DeleteQuery<T> deleteQuery= dao.queryBuilder()
.where(dao.getPkProperty().eq(id)).buildDelete();
deleteQuery.executeDeleteWithoutDetachingEntities();
MainDbContext.getDaoSession().clear();
return true;
}
public boolean DeleteAll()
{
dao.deleteAll();
return true;
}
public boolean Delete(WhereCondition cond)
{
DeleteQuery<T> deleteQuery= dao.queryBuilder()
.where(cond).buildDelete();
deleteQuery.executeDeleteWithoutDetachingEntities();
MainDbContext.getDaoSession().clear();
return true;
}
public T FirstOrDefault(Long id)
{
List<T> entities = dao.queryBuilder()
.where(dao.getPkProperty().eq(id)).limit(1).list();
if (entities.size() > 0)
return entities.get(0);
else
return null;
}
public boolean Exists(WhereCondition cond)
{
Long counts = dao.queryBuilder()
.where(cond).count();
if (counts > 0)
return true;
else
return false;
}
public Long Count(WhereCondition cond)
{
Long counts = dao.queryBuilder()
.where(cond).count();
return counts;
}
public T FirstOrDefault(WhereCondition... cond)
{
List<T> lst = new ArrayList<>();
if (cond.length == 1)
lst = dao.queryBuilder().where(cond[0]).limit(1).list();
else
if (cond.length == 2)
lst = dao.queryBuilder().where(cond[0],cond[1]).limit(1).list();
else
if (cond.length == 3)
lst = dao.queryBuilder().where(cond[0],cond[1],cond[2]).limit(1).list();
if (lst.size() > 0)
return lst.get(0);
return null;
}
public T LastOrDefault()
{
List<T> entities = dao.queryBuilder()
.orderDesc(dao.getPkProperty()).limit(1).list();
if (entities.size() > 0)
return entities.get(0);
else
return null;
}
public List<T> FetchMulti()
{
return (List<T>)dao.loadAll();
}
public List<T> FetchMulti(WhereCondition... cond)
{
if (cond.length == 1)
return dao.queryBuilder().where(cond[0]).list();
else
if (cond.length == 2)
return dao.queryBuilder().where(cond[0],cond[1]).list();
else
if (cond.length == 3)
return dao.queryBuilder().where(cond[0],cond[1],cond[2]).list();
else
return dao.loadAll();
}
}
及其界面
package Interfaces;
import org.greenrobot.greendao.query.DeleteQuery;
import org.greenrobot.greendao.query.WhereCondition;
import java.util.List;
/**
* Created by macintosh on 1/20/18.
*/
public interface IBaseRepository<T> {
Boolean Create(T entity);
void Update(T entity);
boolean Delete(Long id);
boolean DeleteAll();
boolean Delete(WhereCondition cond);
T FirstOrDefault(Long id);
boolean Exists(WhereCondition cond);
Long Count(WhereCondition cond);
T FirstOrDefault(WhereCondition... cond);
T LastOrDefault();
List<T> FetchMulti();
List<T> FetchMulti(WhereCondition... cond);
}
然后我可以在我的服务中访问这些方法 CategoryService.java
package services;
import android.content.Context;
import Common.VolleyCallback;
import Entities.Category;
import Entities.DaoSession;
import ir.swifttips.fidiboo.MainDbContext;
import Interfaces.ICategoryService;
import Interfaces.IProductService;
import iOC.ServiceFactory;
import restful.restfulApiInterfaces.IProductApi;
import restful.restfulResponse.ProductCategoryApiResponse;
import viewModels.ProductCategoryViewModel;
public class CategoryService extends BaseRepository<Category> implements ICategoryService {
Context context;
public CategoryService() {
super(Category.class);
context = MainDbContext.getAppContext();
}
}
及其界面
package Interfaces;
import Common.VolleyCallback;
import Entities.Category;
public interface ICategoryService extends IBaseRepository<Category> {
}
或userService.java
package services;
import android.content.Context;
import java.util.List;
import Entities.DaoSession;
import ir.swifttips.fidiboo.MainDbContext;
import Entities.User;
import Entities.UserDao;
import Interfaces.IUserService;
/**
* Created by macintosh on 12/30/17.
*/
public class UserService extends BaseRepository<User> implements IUserService {
Context context;
public UserService() {
super(User.class);
context = MainDbContext.getAppContext();
}
public User GetUserById_Query(Long id) {
List<User> users = dao.queryBuilder().where(UserDao.Properties.UserId.eq(id)).list();
if (users.size() > 0)
return users.get(0);
return null;
}
public User GetUserById(Long id) {
DaoSession daoSession = MainDbContext.getDaoSession();
User user = daoSession.getUserDao().load(id);
return user;
}
public boolean Exists(Long id) {
DaoSession daoSession = MainDbContext.getDaoSession();
User user = daoSession.getUserDao().load(id);
if (user == null)
return false;
else
return true;
}
}
及其界面
package Interfaces;
import Entities.User;
import Entities.DaoSession;
/**
* Created by macintosh on 1/3/18.
*/
public interface IUserService extends IBaseRepository<User> {
User LoggedinUser();
User GetUserById_Query(Long id);
User GetUserById(Long id) ;
boolean Exists(Long id) ;
}
我想在 android studio 中集成 Greendao 和 Sqlcipher 以获得加密数据库。我用 sqlcipher-for-android
我将这些添加到我的 app/build。gradle
compile 'org.greenrobot:greendao:3.2.0'
compile 'org.greenrobot:greendao-generator:3.2.0'
compile 'net.zetetic:android-database-sqlcipher:3.5.6@aar'
我从 Here 下载了 v3.5.6 在第二步中,我必须执行这些命令
% unzip sqlcipher-for-android-v3.5.6.zip
% mkdir -p app/libs
% cp sqlcipher-for-android-v3.5.6/sqlcipher.jar app/libs
% cp -r sqlcipher-for-android-v3.5.6/armeabi \
sqlcipher-for-android-v3.5.6/armeabi-v7a \
sqlcipher-for-android-v3.5.6/x86
sqlcipher-for-android-v3.5.6/x86_64 \
sqlcipher-for-android-v3.5.6/arm64_v8a app/src/main/jniLibs/
但是压缩文件中没有 sqlcipher.jar、armeabi、armeabi-v7a、x86 和...
我是不是遗漏了什么或做错了什么? 请帮忙
将其与 example 进行比较解决了问题
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
android {
buildToolsVersion '25.0.2'
compileSdkVersion 25
defaultConfig {
applicationId "org.greenrobot.greendao.example"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "3"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
}
greendao {
schemaVersion 1000
}
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
// This is only needed if you want to use encrypted databases
compile 'net.zetetic:android-database-sqlcipher:3.5.6'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
}
uploadArchives.enabled = falseapply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
android {
buildToolsVersion '25.0.2'
compileSdkVersion 25
defaultConfig {
applicationId "org.greenrobot.greendao.example"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "3"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
}
greendao {
schemaVersion 1000
}
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
// This is only needed if you want to use encrypted databases
compile 'net.zetetic:android-database-sqlcipher:3.5.6'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
}
uploadArchives.enabled = false
和下面的代码:
package org.greenrobot.greendao.example;
import android.app.Application;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.example.DaoMaster.DevOpenHelper;
public class App extends Application {
/** A flag to show how easily you can switch from standard SQLite to the
encrypted SQLCipher. */
public static final boolean ENCRYPTED = true;
private DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
DevOpenHelper helper = new DevOpenHelper(this, ENCRYPTED ? "notes-db-encrypted" : "notes-db");
Database db = ENCRYPTED ? helper.getEncryptedWritableDb("super-secret") : helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
要读取和修改数据,我有一个基础存储库
首先是我的实体: //Category.java
package Entities;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Generated;
@org.greenrobot.greendao.annotation.Entity(
nameInDb = "Categories"
)
public class Category {
@Id
public Long CategoryId;
@NotNull
public String Name;
public String Description;
@Generated(hash = 1903625692)
public Category(Long CategoryId, @NotNull String Name, String Description) {
this.CategoryId = CategoryId;
this.Name = Name;
this.Description = Description;
}
@Generated(hash = 1150634039)
public Category() {
}
public Long getCategoryId() {
return this.CategoryId;
}
public void setCategoryId(Long CategoryId) {
this.CategoryId = CategoryId;
}
public String getName() {
return this.Name;
}
public void setName(String Name) {
this.Name = Name;
}
public String getDescription() {
return this.Description;
}
public void setDescription(String Description) {
this.Description = Description;
}
}
和User.java
package Entities;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Generated;
@org.greenrobot.greendao.annotation.Entity(
nameInDb = "Users"
)
public class User {
@Id
public Long UserId;
public String Username;
public String Mobile;
@NotNull
public String UserApiKey;
@NotNull
public String SecretKey;
public String FirstName;
public String LastName;
public boolean IsFirstLogin;
@Generated(hash = 1246565860)
public User(Long UserId, String Username, String Mobile,
@NotNull String UserApiKey, @NotNull String SecretKey, String FirstName,
String LastName, boolean IsFirstLogin) {
this.UserId = UserId;
this.Username = Username;
this.Mobile = Mobile;
this.UserApiKey = UserApiKey;
this.SecretKey = SecretKey;
this.FirstName = FirstName;
this.LastName = LastName;
this.IsFirstLogin = IsFirstLogin;
}
@Generated(hash = 586692638)
public User() {
}
public Long getUserId() {
return this.UserId;
}
public void setUserId(Long UserId) {
this.UserId = UserId;
}
public String getUsername() {
return this.Username;
}
public void setUsername(String Username) {
this.Username = Username;
}
public String getMobile() {
return this.Mobile;
}
public void setMobile(String Mobile) {
this.Mobile = Mobile;
}
public String getUserApiKey() {
return this.UserApiKey;
}
public void setUserApiKey(String UserApiKey) {
this.UserApiKey = UserApiKey;
}
public String getSecretKey() {
return this.SecretKey;
}
public void setSecretKey(String SecretKey) {
this.SecretKey = SecretKey;
}
public String getFirstName() {
return this.FirstName;
}
public void setFirstName(String FirstName) {
this.FirstName = FirstName;
}
public String getLastName() {
return this.LastName;
}
public void setLastName(String LastName) {
this.LastName = LastName;
}
public boolean getIsFirstLogin() {
return this.IsFirstLogin;
}
public void setIsFirstLogin(boolean IsFirstLogin) {
this.IsFirstLogin = IsFirstLogin;
}
}
和BaseRepository.java
package services;
import org.greenrobot.greendao.AbstractDao;
import org.greenrobot.greendao.query.DeleteQuery;
import org.greenrobot.greendao.query.WhereCondition;
import java.util.ArrayList;
import java.util.List;
import Entities.DaoSession;
import ir.swifttips.fidiboo.MainDbContext;
import Interfaces.IBaseRepository;
/**
* Created by macintosh on 1/20/18.
*/
public class BaseRepository<T> implements IBaseRepository<T> {
Class<T> type;
public AbstractDao<T, ?> dao;
public BaseRepository(Class<T> _type) {
type = _type;
DaoSession daoSession = MainDbContext.getDaoSession();
dao = (AbstractDao<T, ?>) daoSession.getDao(_type);
}
public Boolean Create(T entity)
{
dao.insert(entity);
return true;
}
public void Update(T entity)
{
dao.update(entity);
}
public boolean Delete(Long id)
{
DeleteQuery<T> deleteQuery= dao.queryBuilder()
.where(dao.getPkProperty().eq(id)).buildDelete();
deleteQuery.executeDeleteWithoutDetachingEntities();
MainDbContext.getDaoSession().clear();
return true;
}
public boolean DeleteAll()
{
dao.deleteAll();
return true;
}
public boolean Delete(WhereCondition cond)
{
DeleteQuery<T> deleteQuery= dao.queryBuilder()
.where(cond).buildDelete();
deleteQuery.executeDeleteWithoutDetachingEntities();
MainDbContext.getDaoSession().clear();
return true;
}
public T FirstOrDefault(Long id)
{
List<T> entities = dao.queryBuilder()
.where(dao.getPkProperty().eq(id)).limit(1).list();
if (entities.size() > 0)
return entities.get(0);
else
return null;
}
public boolean Exists(WhereCondition cond)
{
Long counts = dao.queryBuilder()
.where(cond).count();
if (counts > 0)
return true;
else
return false;
}
public Long Count(WhereCondition cond)
{
Long counts = dao.queryBuilder()
.where(cond).count();
return counts;
}
public T FirstOrDefault(WhereCondition... cond)
{
List<T> lst = new ArrayList<>();
if (cond.length == 1)
lst = dao.queryBuilder().where(cond[0]).limit(1).list();
else
if (cond.length == 2)
lst = dao.queryBuilder().where(cond[0],cond[1]).limit(1).list();
else
if (cond.length == 3)
lst = dao.queryBuilder().where(cond[0],cond[1],cond[2]).limit(1).list();
if (lst.size() > 0)
return lst.get(0);
return null;
}
public T LastOrDefault()
{
List<T> entities = dao.queryBuilder()
.orderDesc(dao.getPkProperty()).limit(1).list();
if (entities.size() > 0)
return entities.get(0);
else
return null;
}
public List<T> FetchMulti()
{
return (List<T>)dao.loadAll();
}
public List<T> FetchMulti(WhereCondition... cond)
{
if (cond.length == 1)
return dao.queryBuilder().where(cond[0]).list();
else
if (cond.length == 2)
return dao.queryBuilder().where(cond[0],cond[1]).list();
else
if (cond.length == 3)
return dao.queryBuilder().where(cond[0],cond[1],cond[2]).list();
else
return dao.loadAll();
}
}
及其界面
package Interfaces;
import org.greenrobot.greendao.query.DeleteQuery;
import org.greenrobot.greendao.query.WhereCondition;
import java.util.List;
/**
* Created by macintosh on 1/20/18.
*/
public interface IBaseRepository<T> {
Boolean Create(T entity);
void Update(T entity);
boolean Delete(Long id);
boolean DeleteAll();
boolean Delete(WhereCondition cond);
T FirstOrDefault(Long id);
boolean Exists(WhereCondition cond);
Long Count(WhereCondition cond);
T FirstOrDefault(WhereCondition... cond);
T LastOrDefault();
List<T> FetchMulti();
List<T> FetchMulti(WhereCondition... cond);
}
然后我可以在我的服务中访问这些方法 CategoryService.java
package services;
import android.content.Context;
import Common.VolleyCallback;
import Entities.Category;
import Entities.DaoSession;
import ir.swifttips.fidiboo.MainDbContext;
import Interfaces.ICategoryService;
import Interfaces.IProductService;
import iOC.ServiceFactory;
import restful.restfulApiInterfaces.IProductApi;
import restful.restfulResponse.ProductCategoryApiResponse;
import viewModels.ProductCategoryViewModel;
public class CategoryService extends BaseRepository<Category> implements ICategoryService {
Context context;
public CategoryService() {
super(Category.class);
context = MainDbContext.getAppContext();
}
}
及其界面
package Interfaces;
import Common.VolleyCallback;
import Entities.Category;
public interface ICategoryService extends IBaseRepository<Category> {
}
或userService.java
package services;
import android.content.Context;
import java.util.List;
import Entities.DaoSession;
import ir.swifttips.fidiboo.MainDbContext;
import Entities.User;
import Entities.UserDao;
import Interfaces.IUserService;
/**
* Created by macintosh on 12/30/17.
*/
public class UserService extends BaseRepository<User> implements IUserService {
Context context;
public UserService() {
super(User.class);
context = MainDbContext.getAppContext();
}
public User GetUserById_Query(Long id) {
List<User> users = dao.queryBuilder().where(UserDao.Properties.UserId.eq(id)).list();
if (users.size() > 0)
return users.get(0);
return null;
}
public User GetUserById(Long id) {
DaoSession daoSession = MainDbContext.getDaoSession();
User user = daoSession.getUserDao().load(id);
return user;
}
public boolean Exists(Long id) {
DaoSession daoSession = MainDbContext.getDaoSession();
User user = daoSession.getUserDao().load(id);
if (user == null)
return false;
else
return true;
}
}
及其界面
package Interfaces;
import Entities.User;
import Entities.DaoSession;
/**
* Created by macintosh on 1/3/18.
*/
public interface IUserService extends IBaseRepository<User> {
User LoggedinUser();
User GetUserById_Query(Long id);
User GetUserById(Long id) ;
boolean Exists(Long id) ;
}