GreenDao数据库
来源:互联网 发布:淘宝一颗钻在哪看 编辑:程序博客网 时间:2024/06/07 10:34
使用步骤:
- 1 配置gradle相关
Project(根目录)的build.gradle下:缺什么补什么不知道怎么加的自己琢磨吧...
buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}
实体类存在自身Module的build.gradle下:
apply plugin: 'org.greenrobot.greendao'// 添加应用依赖插件android { /*针对greenDao的一些配置*/ greendao { schemaVersion 1 //数据库版本号 daoPackage 'com.usher.greendao_demo.greendao.gen' //自动生成的工具类的包名 targetGenDir 'src/main/java' //路径 }}dependencies { 。。。。其他依赖 /*greenDao框架*/ compile 'org.greenrobot:greendao:3.2.0'}
先写好实体类User
public class User { @Id private long id; private String name; @Generated(hash = 586692638) public User() { } @Generated(hash = 1144922831) public User(long id, String name) { this.id = id; this.name = name; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
greenDao多使用注解,如果你要将某一实体存储到数据库中,需要先对实体进行编写。
@Entity表明该类是持久化的类【持久化含义,存入数据库文件中,作本地化处理】
@Id选择一个long或Long类型的属性作为该实体所对应数据库中数据表的主键【类型要是long】
@Generated写在构造方法前
将以上注解写好后,点击AS上的Make Project即可
然后可以发现,你的Module中多了个包,点开可以看到如下
然后接下来就可以对数据库进行操作了
先上布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="10dp" android:text="greenDao lib test" android:textColor="@android:color/black" /> <EditText android:id="@+id/etId" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户id" android:inputType="number" android:textSize="15sp" /> <EditText android:id="@+id/etName" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户名" android:textSize="15sp" /> <Button android:id="@+id/btnAdd" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="新增" /> <Button android:id="@+id/btnDelete" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="删除" /> <Button android:id="@+id/btnQuery" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="10dp" android:text="查询结果" android:textColor="@android:color/black" /> <TextView android:id="@+id/tvQuery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="10dp" android:textColor="@android:color/black" /></LinearLayout>
然后是MainActivity:
public class MainActivity extends AppCompatActivity { UserDao userDao; private EditText etId; private EditText etName; private Button btnAdd; private Button btnDelete; private Button btnQuery; private TextView tvQuery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initDbHelp(); /*新增一条数据*/ btnAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String id = etId.getText().toString(); String name = etName.getText().toString(); if (isNotEmpty(id) && isNotEmpty(name)) { QueryBuilder qb = userDao.queryBuilder(); ArrayList<User> list = (ArrayList<User>) qb.where(UserDao.Properties.Id.eq(id)).list(); if (list.size() > 0) { Toast.makeText(MainActivity.this, "主键重复", Toast.LENGTH_SHORT).show(); } else { userDao.insert(new User(Long.valueOf(id), name)); Toast.makeText(MainActivity.this, "插入数据成功", Toast.LENGTH_SHORT).show(); } } else { if (isEmpty(id) && isNotEmpty(name)) { Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show(); } if (isEmpty(name) && isNotEmpty(id)) { Toast.makeText(MainActivity.this, "姓名为空", Toast.LENGTH_SHORT).show(); } if (isEmpty(id) && isEmpty(name)) { Toast.makeText(MainActivity.this, "请填写信息", Toast.LENGTH_SHORT).show(); } } etId.setText(""); etName.setText(""); } }); /*删除指定数据*/ btnDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String id = etId.getText().toString(); if (isNotEmpty(id)) { userDao.deleteByKey(Long.valueOf(id)); QueryBuilder qb = userDao.queryBuilder(); ArrayList<User> list = (ArrayList<User>) qb.where(UserDao.Properties.Id.eq(id)).list(); if (list.size() < 1) { Toast.makeText(MainActivity.this, "删除数据成功", Toast.LENGTH_SHORT).show(); etId.setText(""); etName.setText(""); } } else { Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show(); } } }); /*查询数据*/ btnQuery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String id = etId.getText().toString(); if (isNotEmpty(id)) { QueryBuilder qb = userDao.queryBuilder(); ArrayList<User> list = (ArrayList<User>) qb.where(UserDao.Properties.Id.eq(id)).list(); if (list.size() > 0) { String text = ""; for (User user : list) { text = text + "\r\n" + user.getName(); } tvQuery.setText(text); } else { tvQuery.setText(""); Toast.makeText(MainActivity.this, "不存在该数据", Toast.LENGTH_SHORT).show(); } etId.setText(""); etName.setText(""); } else { Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show(); } } }); } /*初始化数据库相关*/ private void initDbHelp() { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "recluse-db", null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); userDao = daoSession.getUserDao(); } private void initView() { etId = (EditText) findViewById(R.id.etId); etName = (EditText) findViewById(R.id.etName); btnAdd = (Button) findViewById(R.id.btnAdd); btnDelete = (Button) findViewById(R.id.btnDelete); btnQuery = (Button) findViewById(R.id.btnQuery); tvQuery = (TextView) findViewById(R.id.tvQuery); } private boolean isNotEmpty(String s) { if (s != null && !s.equals("") || s.length() > 0) { return true; } else { return false; } } private boolean isEmpty(String s) { if (isNotEmpty(s)) { return false; } else { return true; } }}
以上有一些判断是否成功的操作,因为greenDao并没有提供操作后的回调,所以我这里就只是手动判断一下
依次存入1/usher 、2/tom、3/harry 三组数据,然后提取数据库文件如下:
OK大功告成!
想要更深入的了解呢,请访问以下网址
http://www.apkbus.com/blog-904057-67980.html
http://www.jianshu.com/p/00d93c2d511f
阅读全文
0 0
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库结构升级
- GreenDAO数据库版本升级
- GreenDAO数据库版本升级
- android 数据库之greendao
- GreenDao数据库升级解决方案
- greendao数据库升级
- GreenDao 2.2 数据库加密
- GreenDao数据库简单使用
- GreenDao数据库的使用
- Android 数据库 GreenDao使用
- springmvc 文件上传
- jvm的堆和栈
- Java小白需知
- 如何在Chatbot中应用深度学习
- LCA在线算法
- GreenDao数据库
- Eclipse自动排版快捷键失效(转)
- 面向对象练习
- git常用命令
- javascript如何刷新父窗口
- “右键点文件电脑假死机”处理方法
- Java读取属性配置文件
- 使用echart从后台获取数据动态显示到页面
- Mysql执行sql脚本的方法