• GreenDao


    GreenDao 优点:
     
    1.性能高,号称Android最快的关系型数据库
    2.内存占用小
    3.库文件比较小,小于100K,编译时间低,而且可以避免65K方法限制
    4.支持数据库加密 greendao支持SQLCipher进行数据库加密 有关SQLCipher可以参考这篇博客Android数据存储之Sqlite采用SQLCipher数据库加密实战
    5.简洁易用的API
     
    第一步 先在 项目的Project 的 buil.gradle 里 在buildscript- repositories添加配置mavenCentral(),
     
    在dependencies 里添加
    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
     
     
    buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' } }
    第二步 在自己想要用的
    GreenDao Module 里的 dependencies 里添加
    compile 'org.greenrobot:greendao:3.2.2'
     
     
    头部 添加
    apply plugin: 'org.greenrobot.greendao'
     
    在Android中添加
    greendao{
    schemaVersion 1
    daoPackage'com.afa.tourism.greendao.gen'
    targetGenDir'src/main/java'
    }
     
    现在已经配置好了可以使用了
     
    创建新的实体类
    不需要写set get 方法。 他自动帮我们生成.
     
     
    @Entity //指定为数据库类的对象  
    public class User {    
        @Id(autoincrement=true)   //此ID必须有且为long类型 autoincrement=true为自增长 
        private Long id;    
    @Property(nameInDb = "username") //映射所对应的列名为 username
        private String name;  
        @Transient  //这个注解意思为这个属性不会保存到数据库为属性 在数据库中不对这个属性进行操作  
        private int tempUsageCount; // not persisted  
      } 
     
    自己生成的三个核心类
     
     
    基本上这样的配置就算完成了,简单的写一下增删改查的类
    public class DBManager {
    private final static String dbName = "test_db";
    private static DBManager mInstance;
    private DaoMaster.DevOpenHelper openHelper;
    private Context context;
     
    private DBManager(Context context) {
    this.context = context;
    openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
    }
    public static DBManager getInstance(Context context) {
    if (mInstance == null) {
    synchronized (DBManager.class) {
    if (mInstance == null) {
    mInstance = new DBManager(context);
    }
    }
    }
    return mInstance;
    }
    /**
    * 获取可读数据库
    */
    private SQLiteDatabase getReadableDatabase() {
    if (openHelper == null) {
    openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
    }
    SQLiteDatabase db = openHelper.getReadableDatabase();
    return db;
    }
    /**
    * 获取可写数据库
    */
    private SQLiteDatabase getWritableDatabase() {
    if (openHelper == null) {
    openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
    }
    SQLiteDatabase db = openHelper.getWritableDatabase();
    return db;
    }
    /**
    * 插入一条记录
    *
    * @param user
    */
    public void insertUser(User user) {
    DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
    DaoSession daoSession = daoMaster.newSession();
    UserDao userDao = daoSession.getUserDao();
    userDao.insert(user);
    }
     
    /**
    * 插入用户集合
    *
    * @param users
    */
    public void insertUserList(List<User> users) {
    if (users == null || users.isEmpty()) {
    return;
    }
    DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
    DaoSession daoSession = daoMaster.newSession();
    UserDao userDao = daoSession.getUserDao();
    userDao.insertInTx(users);
    }
    /**
    * 删除一条记录
    *
    * @param user
    */
    public void deleteUser(User user) {
    DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
    DaoSession daoSession = daoMaster.newSession();
    UserDao userDao = daoSession.getUserDao();
    userDao.delete(user);
    }
    /**
    * 更新一条记录
    *
    * @param user
    */
    public void updateUser(User user) {
    DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
    DaoSession daoSession = daoMaster.newSession();
    UserDao userDao = daoSession.getUserDao();
    userDao.update(user);
    }
    /**
    * 查询用户列表
    */
    public List<User> queryUserList() {
    DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
    DaoSession daoSession = daoMaster.newSession();
    UserDao userDao = daoSession.getUserDao();
    QueryBuilder<User> qb = userDao.queryBuilder();
    List<User> list = qb.list();
    return list;
    }
    }
     
    测试程序
    DBManager dbManager = DBManager.getInstance(this); for (int i = 0; i < 5; i++) { User user = new User(); user.setId(i); user.setAge(i * 3); user.setName("第" + i + "人"); dbManager.insertUser(user); } List<User> userList = dbManager.queryUserList(); for (User user : userList) { Log.e("TAG", "queryUserList--before-->" + user.getId() + "--" + user.getName() +"--"+user.getAge()); if (user.getId() == 0) { dbManager.deleteUser(user); } if (user.getId() == 3) { user.setAge(10); dbManager.updateUser(user); } } userList = dbManager.queryUserList(); for (User user : userList) { Log.e("TAG", "queryUserList--after--->" + user.getId() + "---" + user.getName()+"--"+user.getAge()); }
     
    运行结果
     
  • 相关阅读:
    PHP加密解密函数
    动态生成的dom元素如何绑定事件
    Delphi水晶横向竖向打印
    Delphi关键词
    Laravel进行数据库迁移(migration)
    如何开始使用Laravel
    PHP基础之如何调试PHP程序(HBuilder)
    PHP基础之搭建WAMP环境
    一些面试题
    进程管理
  • 原文地址:https://www.cnblogs.com/ysxy/p/8807283.html
Copyright © 2020-2023  润新知