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

来源:互联网 发布:socket读取数据不完整 编辑:程序博客网 时间:2024/04/29 06:00

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 实体类写入如下注释

 @Entitypublic 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

0 0
原创粉丝点击