GreenDao3.0简单使用

来源:互联网 发布:画风好的h漫 知乎 编辑:程序博客网 时间:2024/06/06 09:43

GreenDao3.0简单使用

greenDAO 优势

1、一个精简的库
2、性能最大化
3、内存开销最小化
4、易于使用的 APIs
5、对 Android 进行高度优化

配置

app中导依赖

apply plugin: 'org.greenrobot.greendao'
compile 'org.greenrobot:greendao:3.2.0'
app Android中
greendao {    schemaVersion 1    daoPackage 'com.example.greendao.gen'    targetGenDir 'src/main/java' }
工程中
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

User类

@Entitypublic class User {    @Id(autoincrement = true)    private Long id;    private String name;    @Generated(hash = 873297011)    public User(Long id, String name) {        this.id = id;        this.name = name;    }    @Generated(hash = 586692638)    public User() {    }    public Long getId() {        return this.id;    }    public void setId(Long id) {        this.id = id;    }    public String getName() {        return this.name;    }    public void setName(String name) {        this.name = name;    }}
Myapplication类
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;    }    private void setDatabase() {        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。        mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);        db = mHelper.getWritableDatabase();        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。        mDaoMaster = new DaoMaster(db);        mDaoSession = mDaoMaster.newSession();    }    public DaoSession getDaoSession() {        return mDaoSession;    }    public SQLiteDatabase getDb() {        return db;    }}

Main
public class MainActivity extends AppCompatActivity implements View.OnClickListener {    UserDao userDao;    private TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button add= (Button) findViewById(R.id.add);        Button select= (Button) findViewById(R.id.select);        Button replace= (Button) findViewById(R.id.replace);        Button delete= (Button) findViewById(R.id.delete);        tv = (TextView) findViewById(R.id.textView);        add.setOnClickListener(this);        select.setOnClickListener(this);        replace.setOnClickListener(this);        delete.setOnClickListener(this);        userDao =Myapplication.getInstances().getDaoSession().getUserDao();//        userDao.deleteByKey((long) 1);    }    @Override    public void onClick(View view) {        switch (view.getId())        {            case R.id.add:                User user = new User(null,"小白");                userDao.insert(user);                Toast.makeText(MainActivity.this,"添加小白成功",Toast.LENGTH_LONG).show();                break;            case R.id.select:                List<User> users = userDao.loadAll();                String userName = "";                for (int i = 0; i < users.size(); i++) {                    userName += users.get(i).getName();                }                Log.d("数据",userName);                tv.setText(userName);                break;            case R.id.replace:                User replaceuser=new User((long) 1,"小黑");                userDao.update(replaceuser);                Toast.makeText(MainActivity.this,"替換xiaohei成功",Toast.LENGTH_LONG).show();                break;            case R.id.delete:                userDao.deleteAll();                Toast.makeText(MainActivity.this,"刪除成功",Toast.LENGTH_LONG).show();                break;        }    }}
布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.greendao.MainActivity">    <Button        android:text="添加"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:id="@+id/add" />    <Button        android:text="查询"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_toRightOf="@+id/add"        android:layout_toEndOf="@+id/add"        android:layout_marginLeft="10dp"        android:layout_marginStart="10dp"        android:id="@+id/select" />    <Button        android:text="修改"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_toRightOf="@+id/select"        android:layout_toEndOf="@+id/select"        android:layout_marginLeft="18dp"        android:layout_marginStart="18dp"        android:id="@+id/replace" />    <Button        android:text="删除"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_alignParentRight="true"        android:layout_alignParentEnd="true"        android:id="@+id/delete" />    <TextView        android:text="TextView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/textView"        android:layout_alignParentBottom="true"        android:layout_alignLeft="@+id/select"        android:layout_alignStart="@+id/select"        android:layout_marginBottom="165dp" />
</RelativeLayout>
 
注意:配置清单文件
Myapplication
原创粉丝点击