ORM greenDAO基本用法
来源:互联网 发布:被子哪个牌子好 知乎 编辑:程序博客网 时间:2024/04/27 00:38
介绍
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases. Being highly optimized for Android, greenDAO offers great performance and consumes minimal memory.
源码:https://github.com/greenrobot/greenDAO
官网:http://greenrobot.org/greendao/
用法
GreenDAO例子
- 创建一个Java Library Model – greendaogenerator,类名GreenDaoGenerator
greendaogenerator/build.gradle
apply plugin: 'java'repositories { mavenLocal() mavenCentral()}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'de.greenrobot:greendao-generator:2.0.0'}sourceSets { main { java { srcDir 'src/main/java' } }}artifacts { archives jar}
GreenDaoGenerator.java
package com.xuie;import de.greenrobot.daogenerator.DaoGenerator;import de.greenrobot.daogenerator.Entity;import de.greenrobot.daogenerator.Property;import de.greenrobot.daogenerator.Schema;import de.greenrobot.daogenerator.ToMany;/** * Generates entities and DAOs for the example project DaoExample. * <p/> * Run it as a Java application (not Android). * * @author Markus */public class GreenDaoGenerator { public static void main(String[] args) throws Exception { Schema schema = new Schema(1, "com.xuie.greendaodemo.greendao"); addNote(schema); addCustomerOrder(schema); new DaoGenerator().generateAll(schema, "../app/src/main/java"); } private static void addNote(Schema schema) { Entity note = schema.addEntity("Note"); note.addIdProperty(); note.addStringProperty("text").notNull(); note.addStringProperty("comment"); note.addDateProperty("date"); } private static void addCustomerOrder(Schema schema) { Entity customer = schema.addEntity("Customer"); customer.addIdProperty(); customer.addStringProperty("name").notNull(); Entity order = schema.addEntity("Order"); order.setTableName("ORDERS"); // "ORDER" is a reserved keyword order.addIdProperty(); Property orderDate = order.addDateProperty("date").getProperty(); Property customerId = order.addLongProperty("customerId").notNull().getProperty(); order.addToOne(customer, customerId); ToMany customerToOrders = customer.addToMany(order, customerId); customerToOrders.setName("orders"); customerToOrders.orderAsc(orderDate); }}
编译Java Model
- Run>Edit Configurations..>左上角”+”>选中application
- Name:geendaogenerator
- Main Class:com.xuie.GreenDaoGenerator
- Working directory: xxx/GreenDaoDemo/greendaogenerator
- 再点确定
- 可以看到运行处出现geendaogenerator,或右键Java Model,执行运行
- 可以看到,
../app/src/main/java
下,包名com.xuie.greendaodemo.greendao
目录中产生Java文件(记得先创建好目录),表明运行成功
Android Model添加
app/build.gradle
dependencies { // ... compile 'de.greenrobot:greendao:2.0.0'}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/editTextNote" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:hint="Enter new note" android:imeOptions="actionDone" android:inputType="text"/> <Button android:id="@+id/buttonAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onMyButtonClick" android:text="Add"/> </LinearLayout> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/></LinearLayout>
MainActivity.java
package com.xuie.greendaodemo;import android.app.ListActivity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.view.inputmethod.EditorInfo;import android.widget.CursorAdapter;import android.widget.EditText;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import com.xuie.greendaodemo.greendao.DaoMaster;import com.xuie.greendaodemo.greendao.DaoSession;import com.xuie.greendaodemo.greendao.Note;import com.xuie.greendaodemo.greendao.NoteDao;import java.text.DateFormat;import java.util.Date;public class MainActivity extends ListActivity { private EditText editText; private SQLiteDatabase db; private NoteDao noteDao; private SimpleCursorAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db", null); db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao(); String textColumn = NoteDao.Properties.Text.columnName; String orderBy = textColumn + " COLLATE LOCALIZED ASC"; Cursor cursor = db.query(noteDao.getTablename(), noteDao.getAllColumns(), null, null, null, null, orderBy); String[] from = {textColumn, NoteDao.Properties.Comment.columnName}; int[] to = {android.R.id.text1, android.R.id.text2}; adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); setListAdapter(adapter); cursor.close(); editText = (EditText) findViewById(R.id.editTextNote); addUiListeners(); } protected void addUiListeners() { editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { addNote(); return true; } return false; } }); final View button = findViewById(R.id.buttonAdd); button.setEnabled(false); editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { boolean enable = s.length() != 0; button.setEnabled(enable); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); } public void onMyButtonClick(View view) { addNote(); } private void addNote() { String noteText = editText.getText().toString(); editText.setText(""); final DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); String comment = "Added on " + df.format(new Date()); Note note = new Note(null, noteText, comment, new Date()); noteDao.insert(note); Log.d("DaoExample", "Inserted new note, ID: " + note.getId()); changeCursor(); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { noteDao.deleteByKey(id); Log.d("DaoExample", "Deleted note, ID: " + id); changeCursor(); } private void changeCursor() { String textColumn = NoteDao.Properties.Text.columnName; String orderBy = textColumn + " COLLATE LOCALIZED ASC"; Cursor cursor = db.query(noteDao.getTablename(), noteDao.getAllColumns(), null, null, null, null, orderBy); adapter.changeCursor(cursor); adapter.notifyDataSetChanged(); }}
注意
这篇博文,主要写的其实是AS编译Java Mode这一块,第一次用时,可能不知道在哪里点,像我今天就蒙蔽了,怎么老是报我错。。。
源码下载
0 0
- ORM greenDAO基本用法
- greenDao Orm 基本使用<一>
- Android ORM框架GreenDao用法
- ORM对象关系映射之GreenDAO高级用法
- greenDao的基本使用及用法详解
- Android Orm框架(GreenDao)
- ORM框架GreenDao
- ORM框架GreenDao使用
- greenDao---orm框架
- Android Orm框架(GreenDao)
- Android 的ORM GreenDao
- ORM框架-GreenDao
- Android ORM之greenDao
- ORM 框架之 GreenDao
- 数据库GreenDAO+ORM
- greenDao orm 进阶 <二>
- GreenDao开源ORM框架浅析
- Android ORM之GreenDao学习
- 文章标题
- Mac下同时安装多个版本的JDK
- linux ssh 免密码登陆
- HDU 2824 The Euler function(欧拉函数)
- zzuoj--1001--汽水瓶(简单数学)
- ORM greenDAO基本用法
- Glassfish Active Directory SSL LDAP JNDI
- 学习母函数感慨
- 二叉树前中后序遍历非递归及应用
- 【NCRE】---EF三种编程方式
- 常用的设计模式
- IOS微信支付 总结
- 单链表逆序
- PAT甲级1001. A+B Format (20)