在eclipse环境下集成开源数据库框架greenDao
2015-12-18 13:14
555 查看
demo下载地址: http://download.csdn.net/detail/sagemwireless_jsc/9366694
集成步骤:
1:在eclipse中新建一个java工程,这个工程是用来生成代码的
在eclipse中 File ->New ->Java project
然后写上java工程名:
把下载的greendao jar包:greendao-generator-1.3.1.jar 和 freemarker-2.3.20.jar放进 java工程的libs中,新建一个
ScGreenGenerator.java的文件
2. 新建一个android工程:
ScGreenGenerator.java的代码我们一会再说,接下来是新建一个android工程,这个android工程才是真正使用greendao的地方,
建完android工程后,吧jar包 greendao-1.3.7.jar放到android工程的libs目录下,工程目录如下:
3:写ScGreenGenerator.java文件中的代码:
其中需要注意的是 new Schema(1 , "com.songs.greendao"); 中的1是数据库版本号,com.songs.greendao是给工具生成的代码的包名。而"D:/A_demo_code/android_demo/MyGreenDaoDemo/src"这个路径是生成的代码放的路径,这里我把自己的路径放到刚才建的android工程
的src目录下,根据自己需求可以自己修改,代码如下
4: 运行java工程,生成DaoMaster.java ,DaoSession.java Note.java NoteDao.java UserInfo.java UserInfoDao.java 这几个文件
通过日志输出可以看到生成那些文件:
接下来在android工程的src目录下可以看到生成的代码:
MigrationHelper.java和ScOpenHelper.java 不是工具生成的,而是因为需要数据库需要升级维护,我自己加进去的
5. 接下来就是greenDao的使用了,由于我这里只讲怎么在eclipse中怎么集成greenDao,使用的就不在这里详细讲了,具体的使用大家去
下载demo吧 (demo下载地址: http://download.csdn.net/detail/sagemwireless_jsc/9366694) ,demo里面有我以上集成的工程的代码。
这里只把MainActivity中代码提出来看一下是如何使用的:
集成步骤:
1:在eclipse中新建一个java工程,这个工程是用来生成代码的
在eclipse中 File ->New ->Java project
然后写上java工程名:
把下载的greendao jar包:greendao-generator-1.3.1.jar 和 freemarker-2.3.20.jar放进 java工程的libs中,新建一个
ScGreenGenerator.java的文件
2. 新建一个android工程:
ScGreenGenerator.java的代码我们一会再说,接下来是新建一个android工程,这个android工程才是真正使用greendao的地方,
建完android工程后,吧jar包 greendao-1.3.7.jar放到android工程的libs目录下,工程目录如下:
3:写ScGreenGenerator.java文件中的代码:
其中需要注意的是 new Schema(1 , "com.songs.greendao"); 中的1是数据库版本号,com.songs.greendao是给工具生成的代码的包名。而"D:/A_demo_code/android_demo/MyGreenDaoDemo/src"这个路径是生成的代码放的路径,这里我把自己的路径放到刚才建的android工程
的src目录下,根据自己需求可以自己修改,代码如下
public class ScGreenGenerator { public static void main(String[] args) throws Exception { // 正如你所见的,你创建了一个用于添加实体(Entity)的模式(Schema)对象。 // 两个参数分别代表:数据库版本号与自动生成代码的包路径。 Schema schema = new Schema(1, "com.songc.greendao"); // 当然,如果你愿意,你也可以分别指定生成的 Bean 与 DAO 类所在的目录,只要如下所示: // Schema schema = new Schema(1, "com.songc.greendao.bean"); // schema.setDefaultJavaPackageDao("com.songc.greendao.dao"); // 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以及是否使用 keep sections。 // schema2.enableActiveEntitiesByDefault(); // schema2.enableKeepSectionsByDefault(); // 一旦你拥有了一个 Schema 对象后,你便可以使用它添加实体(Entities)了。 addNote(schema); addUserInfo(schema); // 最后我们将使用 DAOGenerator 类的 generateAll() 方法自动生成代码,此处你需要根据自己的情况更改输出目录(既之前创建的目录就发在src下)。 // 其实,输出目录的路径可以在 build.gradle 中设置,有兴趣的朋友可以自行搜索,这里就不再详解。 new DaoGenerator().generateAll(schema, "D:/A_demo_code/android_demo/MyGreenDaoDemo/src"); } /** * @param schema */ private static void addNote(Schema schema) { // 一个实体(类)就关联到数据库中的一张表,此处表名为「Note」(既类名) Entity note = schema.addEntity("Note"); // 你也可以重新给表命名 // note.setTableName("NODE"); // greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值 // 接下来你便可以设置表中的字段: note.addIdProperty(); note.addStringProperty("text").notNull(); // 与在 Java 中使用驼峰命名法不同,默认数据库中的命名是使用大写和下划线来分割单词的。 note.addStringProperty("comment"); note.addDateProperty("date"); } private static void addUserInfo(Schema schema){ Entity userinfo = schema.addEntity("UserInfo"); userinfo.addIdProperty(); userinfo.addStringProperty("user_id"); userinfo.addStringProperty("name"); userinfo.addStringProperty("gender"); userinfo.addStringProperty("phone"); userinfo.addStringProperty("extra"); }
}
4: 运行java工程,生成DaoMaster.java ,DaoSession.java Note.java NoteDao.java UserInfo.java UserInfoDao.java 这几个文件
通过日志输出可以看到生成那些文件:
接下来在android工程的src目录下可以看到生成的代码:
MigrationHelper.java和ScOpenHelper.java 不是工具生成的,而是因为需要数据库需要升级维护,我自己加进去的
5. 接下来就是greenDao的使用了,由于我这里只讲怎么在eclipse中怎么集成greenDao,使用的就不在这里详细讲了,具体的使用大家去
下载demo吧 (demo下载地址: http://download.csdn.net/detail/sagemwireless_jsc/9366694) ,demo里面有我以上集成的工程的代码。
这里只把MainActivity中代码提出来看一下是如何使用的:
package com.author_jsc.mygreendao; import java.util.ArrayList; import java.util.List; import com.songc.greendao.UserInfo; import com.songc.greendao.UserInfoDao; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import de.greenrobot.dao.query.Query; import de.greenrobot.dao.query.QueryBuilder; public class MainActivity extends Activity implements OnClickListener { public static final String TAG = "MainActivity"; private EditText mInputEdTv; private Button mAddBtn; private Button mQueryBtn; private ListView mListView; private MainAdapter mAdapter; private List<UserInfo> mUserInfoList = new ArrayList<UserInfo>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mInputEdTv = (EditText)findViewById(R.id.main_ex_tv); mAddBtn = (Button) findViewById(R.id.main_add_tv); mQueryBtn = (Button) findViewById(R.id.main_query_tv); mListView = (ListView) findViewById(R.id.main_result_listview); mAddBtn.setOnClickListener(this); mQueryBtn.setOnClickListener(this); mAdapter = new MainAdapter(MainActivity.this , mUserInfoList); mListView.setAdapter(mAdapter); } @Override public void onClick(View v) { switch(v.getId()){ 4000 case R.id.main_add_tv: addUserInfo(); break; case R.id.main_query_tv: queryUserInfo(); break; } } private void addUserInfo(){ String userId = mInputEdTv.getText().toString(); mInputEdTv.setText(""); if (userId == null || userId.equals("")) { ToastUtils.show(getApplicationContext(), "Please enter a note to add"); } else { // 插入操作,简单到只要你创建一个 Java 对象 UserInfo userInfo = new UserInfo(null , 10000+userId+"", "songcai_"+userId ,"0", "13514969011" ,"official"); getUserInfoDao().insert(userInfo); Log.d(TAG, "Inserted new note, ID: " + userInfo.getUser_id()); ToastUtils.show(getApplicationContext(), " add data success"); } } private void queryUserInfo(){ String noteText = mInputEdTv.getText().toString(); mInputEdTv.setText(""); if (noteText == null || noteText.equals("")) { ToastUtils.show(getApplicationContext(), "Please enter a user to query"); } else { // Query 类代表了一个可以被重复执行的查询 Query query = getUserInfoDao().queryBuilder() .where(UserInfoDao.Properties.User_id.eq(noteText)) .build(); // 查询结果以 List 返回 mUserInfoList = query.list(); mAdapter.getItems().clear(); mAdapter.setItems(mUserInfoList); ToastUtils.show(getApplicationContext(), "There have " + mUserInfoList.size() + " records"); mAdapter.notifyDataSetChanged(); } // 在 QueryBuilder 类中内置两个 Flag 用于方便输出执行的 SQL 语句与传递参数的值 QueryBuilder.LOG_SQL = true; QueryBuilder.LOG_VALUES = true; } private UserInfoDao getUserInfoDao() { // 通过 BaseApplication 类提供的 getDaoSession() 获取具体 Dao return ((SGApplication) this.getApplicationContext()).getGreenDaoDbUtil().getDaoSession().getUserInfoDao(); } private SQLiteDatabase getDataBase() { // 通过 BaseApplication 类提供的 getDb() 获取具体 db return ((SGApplication) this.getApplicationContext()).getGreenDaoDbUtil().getDataBase(); } }
相关文章推荐
- 快速排序-java非递归
- 7 Java Performance Metrics to Watch After a Major Release--转
- Spring_<context:component-scan base-package="">和<context:annotation-config>学习
- Java多线程编程相关资料推荐
- Java基础--package
- Java 7之基础 - 强引用、弱引用、软引用、虚引用
- Java Double相加出现的怪事
- myEclipse项目转成Eclipse开发
- java中12小时制转换24小时制方法
- java线程之生产者消费者
- 朝花夕拾——Java静态内部类加载
- java swing中实现列表中加入单选按钮,单选按钮发生变化时能触发事件
- java前后端开发中乱码问题
- Java WebService把Date类型转换成XMLGregorianCalendar
- Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
- Java WebService把Date类型转换成XMLGregorianCalendar
- javaWEB学习之filter
- javaweb登录页面验证码验证以及session中验证码值获取不同步的问题
- Java关键字final、static使用总结
- android eclipse 运行模式 切换 debug模式