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" }
schemaVersion 数据库版本号apply plugin: 'org.greenrobot.greendao'
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.youkuaiyun.com/detail/liufatao/9702042