android stdudio 数据库框架greendao3.2使用

greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。

GreenDao 优点:

1.性能高,号称Android最快的关系型数据库
2.内存占用小
3.库文件比较小,小于100K
4.支持数据库加密 greendao支持SQLCipher进行数据库加密
5.简洁易用的API

GreenDao 3.1改动:

GreenDao 3.0最大的变化就是采用注解的方式通过编译方式生成Java数据对象和DAO对象,3.0之前需要通过新建GreenDaoGenerator工程生成Java数据对象和DAO对象,非常的繁琐。

这是我自己学习的和大家分享一下Android studio GreenDao3.2的使用

1新建一个项目,mygreendao 然后file>project>structure..>Dependencies>点击加好添加greendao3.2的依赖包



添加成功 build.gradle 中会出现 greendao3.2 的配置

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'org.greenrobot:greendao:3.2.0'
}
这个时候还没有完全配置完需要在最外部的build.gradle中配置如下

buildscript {
    repositories {
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'//配置的
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
在回到app de build.gradle 配置如下

greendao{
    schemaVersion 1
    targetGenDir "src/main/java"
}
apply plugin: 'org.greenrobot.greendao'

schemaVersion 数据库版本号

targetGenDir:设置DaoMaster、DaoSession、Dao目录

下面就新建一个UserModel 实体类写入如下注释

 @Entity
public class User {
    @Id
    private Long id;
    @Property
    private String naickname;
    @Property
    private String username;}
 点击 make project 重新部署项目


这时会新增 三个类 DaoMaster、DaoSession、UserDao 新建DBMange类进行管理 这里我简单得写了几句sql语句需要其他要求的可以去网上找找

public class DBManage {
    DaoMaster daoMaster;
    DaoSession daoSession;
    Context context;
public DBManage (Context context){
      this.context=context;
      intiDatabase();

     }


    /**
     * 创建数据库连接
     * @param context
     * @return
     */
   public void intiDatabase(){
           DaoMaster.DevOpenHelper devOpenHelper=new DaoMaster.DevOpenHelper(context.getApplicationContext(),"mydb.db",null);
             daoMaster=new DaoMaster(devOpenHelper.getWritableDb());
             daoSession=daoMaster.newSession();
      
   }

    /**
     * 
     * @return 数据对象
     */
    public UserDao getuserdao(){
        return daoSession.getUserDao();
    }

    /**
     * 
     * @param name
     * @param nick
     */
    public void insert(String name,String nick){
        User user=new User(null,name,nick);
        getuserdao().insert(user);
    }
    /**
     * 根据用户id,取出用户信息
     * @param id           用户id
     * @return             用户信息
     */
    public User loadNote(long id) {
        if(!TextUtils.isEmpty(id + "")) {
            return getuserdao().load(id);
        }
        return  null;
    }
    /**
     * 生成按id倒排序的列表
     * @return      倒排数据
     */
    public List<User> loadAllNoteByOrder()
    {
        return getuserdao().queryBuilder().orderDesc(UserDao.Properties.Id).list();
    }

    /**
     * 根据查询条件,返回数据列表
     * @param where        条件
     * @param params       参数
     * @return             数据列表
     */
    public List<User> queryNote(String where, String params){
        return getuserdao().queryRaw(where, params);
    }

    /**
     * 根据用户信息,插件或修改信息
     * @param user              用户信息
     * @return 插件或修改的用户id
     */
    public long saveNote(User user){
        return getuserdao().insertOrReplace(user);
    }

    /**
     * 批量插入或修改用户信息
     * @param list      用户信息列表
     */
    public void saveNoteLists(final List<User> list){
        if(list == null || list.isEmpty()){
            return;
        }
        getuserdao().getSession().runInTx(new Runnable() {
            @Override
            public void run() {
                for(int i=0; i<list.size(); i++){
                    User user = list.get(i);
                    getuserdao().insertOrReplace(user);
                }
            }
        });

    }

    /**
     * 删除所有数据
     */
    public void deleteAllNote(){
        getuserdao().deleteAll();
    }

    /**
     * 根据id,删除数据
     * @param id      用户id
     */
    public void deleteNote(long id){
        getuserdao().deleteByKey(id);
    }
    /**
     * 根据用户类,删除信息
     * @param user    用户信息类
     */
    public void deleteNote(User user){
        getuserdao().delete(user);
    }
    //查询所有
    public List<User> querAll(){
        return getuserdao().loadAll();
    }
}
调用方法,总而言之比原生的数据库操作方便多了复制的都已经自动生成了,调用书写语句都很简单

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DBManage dbManage=new DBManage().intiDatabase(this);
        //添加一条数据
        dbManage.insert("孙悟空","齐天大圣");
        //查询所有数据
        List<User> userslist=dbManage.querAll();
    }

demo 下载地址:http://download.csdn.net/detail/liufatao/9702042

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值