GreenDao的配置使用
来源:互联网 发布:5c5c5c最新域名地址 编辑:程序博客网 时间:2024/06/05 02:40
greenDAO是一款面向Android的轻便快捷的ORM,可将对象映射到SQLite数据库。 针对Android进行了高度优化,greenDAO提供了出色的性能并消耗了最少的内存。
GitHub地址:点击打开链接
GreenDao的优点如下:
应用广泛:greenDAO自2011年以来一直在使用,被无数着名的应用程序所使用
超简单:简洁直观的API,在V3中带有注释
小:小于150K,它只是纯Java jar(没有CPU依赖的本机部分)
快速:可能是由智能代码生成驱动的Android中最快的ORM
安全和表达性的查询API:QueryBuilder使用属性常量来避免打字错误
强大的连接:跨实体查询,甚至连接连接以进行复杂关系
灵活的属性类型:使用自定义类或枚举来表示实体中的数据
加密:支持SQLCipher加密数据库
一.使用准备
1.在build.gradle(Module:app)中加入
compile 'org.greenrobot:greendao:3.0.1'compile 'org.greenrobot:greendao-generator:3.0.0'
2.在build.gradle(Module:app)中引入插件并自定义路径
apply plugin: 'org.greenrobot.greendao'greendao { schemaVersion 1 daoPackage 'com.example.leidong.greendaotest.gen' targetGenDir 'src/main/java'}
3.在build.gradle(Project:XXX)的dependencies中加入
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
4.创建一个User的Bean
package com.example.leidong.greendaotest.beans;import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Generated;/** * Created by leidong on 2017/5/30 */@Entitypublic class User { @Id(autoincrement = true) private Long id; private String name; private int age; public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } @Generated(hash = 1309193360) public User(Long id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Generated(hash = 586692638) public User() { }}
5.编译项目,生成新的文件,结构如下
二.GreenDao的简单使用
1.新建一个MyApplication类继承自MyApplication。
package com.example.leidong.greendaotest;import android.app.Application;import android.database.sqlite.SQLiteDatabase;import com.example.leidong.greendaotest.gen.DaoMaster;import com.example.leidong.greendaotest.gen.DaoSession;/** * Created by leidong on 2017/5/30 */public class MyApplication extends Application { private DaoMaster.DevOpenHelper mHelper; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession; public static MyApplication instances; @Override public void onCreate() { super.onCreate(); instances = this; setDatabase(); } public static MyApplication getInstances(){ return instances; } /** * 设置greenDao */ private void setDatabase() { mHelper = new DaoMaster.DevOpenHelper(this, "leidong.db", null); db = mHelper.getWritableDatabase(); // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 mDaoMaster = new DaoMaster(db); mDaoSession = mDaoMaster.newSession(); } public DaoSession getDaoSession() { return mDaoSession; } public SQLiteDatabase getDb() { return db; }}
在AndroidManifest.xml的application中写入:
android:name=".MyApplication"
2.MainActivity,java
package com.example.leidong.greendaotest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.example.leidong.greendaotest.beans.User;import com.example.leidong.greendaotest.gen.UserDao;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private UserDao userDao; private EditText editText1, editText2, editText3; private TextView textView; private Button button1, button2, button3, button4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initWidgets(); initActions(); } /** * 获取组件 */ private void initWidgets() { editText1 = (EditText) findViewById(R.id.editText1); editText2 = (EditText) findViewById(R.id.editText2); editText3 = (EditText) findViewById(R.id.editText3); textView = (TextView) findViewById(R.id.textView); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button4 = (Button) findViewById(R.id.button4); } /** * 初始化动作 */ private void initActions() { button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); button4.setOnClickListener(this); } /** * 按钮点击事件 * @param v 视图 */ @Override public void onClick(View v) { switch (v.getId()){ case R.id.button1: addUser(); break; case R.id.button2: deleteUser(); break; case R.id.button3: modifyUser(); break; case R.id.button4: queryUser(); break; default: break; } } /** * 查 */ private void queryUser() { StringBuilder sb = new StringBuilder(); userDao = MyApplication.getInstances().getDaoSession().getUserDao(); List<User> userList = userDao.loadAll(); for(int i = 0; i < userList.size(); i++){ String temp = ""; temp += "ID = " + userList.get(i).getId() + " "; temp += "Name = " + userList.get(i).getName() + " "; temp += "Age = " + userList.get(i).getAge() + "\n"; sb.append(temp); } textView.setText(sb.toString()); } /** * 改 */ private void modifyUser() { long id = Long.parseLong(editText1.getText().toString().trim()); String name = editText2.getText().toString().trim(); int age = Integer.parseInt(editText3.getText().toString().trim()); userDao = MyApplication.getInstances().getDaoSession().getUserDao(); User user = new User(); user.setId(id); user.setName(name); user.setAge(age); userDao.update(user); } /** * 删 */ private void deleteUser() { long id = Long.parseLong(editText1.getText().toString().trim()); userDao = MyApplication.getInstances().getDaoSession().getUserDao(); userDao.deleteByKey(id); } /** * 增 */ private void addUser() { String name = editText2.getText().toString().trim(); int age = Integer.parseInt(editText3.getText().toString().trim()); userDao = MyApplication.getInstances().getDaoSession().getUserDao(); User user = new User(); user.setName(name); user.setAge(age); userDao.insert(user); }}
3.activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="16dp" tools:context="com.example.leidong.greendaotest.MainActivity"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/textInputLayout"> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="ID" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textInputLayout" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" android:id="@+id/textInputLayout2"> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Name" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textInputLayout2" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" android:id="@+id/textInputLayout3"> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Age" /> </android.support.design.widget.TextInputLayout> <TextView android:id="@+id/textView" android:background="@drawable/fillet" android:textSize="16sp" android:textColor="#ffffff" android:padding="16dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentStart="true" android:layout_below="@+id/textInputLayout3" android:layout_above="@+id/linearLayout" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:orientation="horizontal" android:weightSum="4" android:layout_marginTop="8dp" android:id="@+id/linearLayout"> <Button android:id="@+id/button1" android:layout_margin="1dp" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="36dp" android:text="Add" android:textAllCaps="false" android:background="@drawable/fillet"/> <Button android:id="@+id/button2" android:layout_margin="1dp" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="36dp" android:text="Delete" android:textAllCaps="false" android:background="@drawable/fillet"/> <Button android:id="@+id/button3" android:layout_margin="1dp" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="36dp" android:text="Modify" android:textAllCaps="false" android:background="@drawable/fillet"/> <Button android:id="@+id/button4" android:layout_margin="1dp" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="36dp" android:text="Query" android:textAllCaps="false" android:background="@drawable/fillet"/> </LinearLayout></RelativeLayout>
其中需要在build.gradle中引入:
compile 'com.android.support:design:23.4.0'
三.运行结果
工程下载:https://github.com/leidongld/GreenDaoTest
- GreenDao的配置使用
- greenDao的使用--- 配置 androidstudio
- GreenDao的配置和简单的使用
- greenDao的简单配置和使用
- Android GreenDao的配置和使用
- GreenDao 的使用与配置方法
- greenDAO 简单使用配置
- GreenDao简单配置使用
- GreenDao配置以及使用
- greendao的配置
- greenDao的配置网址
- Greendao的配置
- GreenDao的基本配置
- greenDAO的使用详解---(1)greenDAO的配置和增删改查
- Android 配置使用 GreenDao 教程
- Android studio配置使用GreenDao
- Android greendao配置及使用
- 关于greenDao的使用
- [leetcode]: 507. Perfect Number
- jquery radio的取值 radio的选中 radio的重置
- Java字节流与字符流的区别
- xcode自动打ipa包脚本
- 关于IOS 我对Runloop 的理解
- GreenDao的配置使用
- 入手linux系统(14.04)---杜绝各种不爽
- 深度学习应用场景整理
- Java类加载器总结
- 执行sudo命令时command not found的解决办法
- 4.0蓝牙学习
- Java多线程编程
- 【mysql 使用错误解决】this is incompatible with sql_mode=only_full_group_by
- 【企业级框架整合】Springmvc+mybatis+restful+bootstrap框架整合