Android之数据库Greedao的使用
来源:互联网 发布:盘锦中小企业seo 编辑:程序博客网 时间:2024/06/05 12:39
我相信,在平时的开发过程中,大家一定会或多或少地接触到数据库。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。所以,适用于 Android 的greedao数据库也就孕育而生,简单的讲,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的解决方案。
GREENDAO 设计的好处
一个精简的库
性能最大化
内存开销最小化
易于使用的 APIs
对 Android 进行高度优化
如何开始
现在我们就来讲一下greedao的简单使用吧!!!
首先,和往常一样导入依赖包,进行配置greedao数据库
compile 'org.greenrobot:greendao:3.0.1'compile 'org.greenrobot:greendao-generator:3.0.0'build.gradle配置
apply plugin: 'org.greenrobot.greendao'buildscript { repositories { mavenCentral() } dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' }}greendao { schemaVersion 1 daoPackage 'com.wyk.greendaodemo.greendao.gen' targetGenDir 'src/main/java'}需要实现一个Bean对象进行保存数据
import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Transient;import org.greenrobot.greendao.annotation.Generated;@Entity //指定为数据库类的对象public class User { @Id //此ID必须有且为long类型 private Long id; private String name; @Transient //这个注解意思为这个属性不会保存到数据库为属性 在数据库中不对这个属性进行操作 private int tempUsageCount; // not persisted
public String getName() { return this.name; //下面的方法自己无需定义 点击studio上方Build->Make Project会自动生成文件 } public void setName(String name) { this.name = name; } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } @Generated(hash = 873297011) public User(Long id, String name) { this.id = id; this.name = name; } @Generated(hash = 586692638) public User() { } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", tempUsageCount=" + tempUsageCount + '}'; }}自己生成的三个核心类
基本上这样的配置就算完成了,简单的写一下增删改查的
创建一个类继承Application初始化数据库:
import android.app.Application;import com.wyk.greendaodemo.greendao.gen.DaoMaster;import com.wyk.greendaodemo.greendao.gen.UserDao;/** * Created by 15218 on 2017/11/7. */public class App extends Application { private UserDao userDao; //暴露给外部使用此数据库 public UserDao getUserDao() { return userDao; } @Override public void onCreate() { super.onCreate(); //对数据库进行初始化 liu.db 数据库的名字 DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this,"liu.db"); DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb()); userDao = daoMaster.newSession().getUserDao(); }}这样我们的逻辑就好写了吧,在我们的Mantivity里边得到数据库,进行对数据库的操作
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Toast;import com.wyk.greendaodemo.greendao.gen.UserDao;import org.greenrobot.greendao.query.QueryBuilder;import java.util.ArrayList;import java.util.List;
public class MainActivity extends AppCompatActivity { private UserDao userDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); App app = (App) getApplication();//得到数据库使用 userDao = app.getUserDao(); } public void add(View v){//添加单条数据 User u = new User(null,"刘备"); userDao.insert(u); } public void addAll(View v){//批量添加 userDao.insertInTx(new User[]{new User(null,"达摩"), new User(null,"赵云"), new User(null,"亚瑟") ,new User(null,"吕布")}); } public void delete(View v){//删除单条 userDao.deleteByKey((long) 1); } public void deleteAll(View v){ //批量删除 userDao.deleteAll(); } public void updata(View v){ //修改单条 User u = new User(Long.valueOf(1),"孙尚香"); userDao.update(u); } public void updataAll(View v){ //批量修改 userDao.updateInTx(new User[]{ new User(Long.valueOf(2),"孙尚香1"), new User(Long.valueOf(3),"孙尚香2") ,new User(Long.valueOf(4),"孙尚香3") }); } public void select(View v){ //条件查询 QueryBuilder<User> userQueryBuilder = userDao.queryBuilder(); List<User> list = userQueryBuilder.build().list(); List<String> l = new ArrayList<>(); for (int i=0;i<list.size();i++){ l.add(list.get(i).getName()); } Toast.makeText(MainActivity.this,l.toString(),Toast.LENGTH_SHORT).show(); } public void selectAll(View v){ //查询所有 List<User> users = userDao.loadAll(); //吐司事件 Toast.makeText(MainActivity.this,users.toString(),Toast.LENGTH_SHORT).show(); }}Mantivity.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" tools:context="liuhao.baway.com.liuhao_greedao.MainActivity"> <Button android:text="单个添加" android:onClick="add" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="批量添加" android:onClick="addAll" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="单个删除" android:onClick="delete" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="批量删除" android:onClick="deleteAll" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="单个修改" android:onClick="updata" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="多条修改" android:onClick="updataAll" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="条件查询" android:onClick="select" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="查询全部" android:onClick="selectAll" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
效果:
Sqlite中显示的
推荐文章:Greedao的注解 http://blog.csdn.net/bugproof/article/details/52074959
Greedao的关联 http://blog.csdn.net/u010687392/article/details/48496299
Greedao的操作 http://blog.csdn.net/njweiyukun/article/details/51893092
阅读全文
1 0
- Android之数据库Greedao的使用
- Android studio 中对数据层框架greeDao的使用
- GreeDAO 使用
- GreeDao基础使用
- GreeDao
- Android之SQLite数据库的使用
- android之数据库的使用案例
- Android之SQLite数据库的使用
- Android之sqlite数据库的简单使用
- Android之SQLite数据库的使用(1)
- Android之Sqlite数据库的使用
- Android学习之数据库DBFlow的使用
- Android之SQLite数据库的使用
- Android 开发之SQLITE 数据库的使用
- android之SQLite数据库的使用
- Android之SQLite数据库的使用
- <Android>本地数据库之--Xutils的使用
- Android之SQLite数据库的使用
- Spring@Autowired注解、@Override注解
- 变卦的变爻
- Android+PHP+MySQL开发简单实例
- ubuntu 16.04下安装VirtualBox5.2
- jvm内存区域
- Android之数据库Greedao的使用
- Unity3D--关于RectTransform的总结
- ip的划分
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问1
- 改做人工智能之前,90%的人都没能给自己定位
- swift 声明变量的?和!的区别
- python文件读取处理方法小计
- python的位置参数、默认参数、关键字参数、可变参数区别
- DrawerLayout 侧拉,打开,关闭,Log 打印