GreenDao数据库的使用
来源:互联网 发布:手机号码定位软件 编辑:程序博客网 时间:2024/05/29 18:55
- 创建Android测试项目导入相关资源
- 在Android项目下创建用于生成帮助类及Bean的java文件
- 操作数据库
创建Android测试项目,导入相关资源
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/java-gen'] } } compile 'de.greenrobot:greendao-generator:2.1.0' compile 'de.greenrobot:greendao:2.1.0'
在Android项目下创建用于生成帮助类及Bean的java文件
创建java文件
编写具体的ExampleDaoGenerator代码如下:
import de.greenrobot.daogenerator.DaoGenerator;import de.greenrobot.daogenerator.Entity;import de.greenrobot.daogenerator.Schema;public class ExampleDaoGenerator { private static void addTaskDetail(Schema schema) { //指定实体类,参数是实体类的类名 Entity entity = schema.addEntity("User"); //添加id索引 entity.addIdProperty(); //添加属性userId,指定非空 entity.addStringProperty("userId").notNull(); //添加属性username entity.addStringProperty("username"); //添加属性age entity.addIntProperty("age"); //添加属性phone entity.addStringProperty("phone"); Entity entity1 = schema.addEntity("Person"); entity1.addIdProperty(); entity1.addStringProperty("personId").notNull(); entity1.addStringProperty("personName"); } //生成数据库文件的目标包名//target package for dao files public static void main(String[] args) throws Exception { // 第一个参数是数据库版本号,第二个参数是生成的文件所处的路径 Schema schema = new Schema(1, "com.lpf.greendb.db.bean"); // 此行代码不加,所有生成的文件将会在同一个目录下,加了此行代码,帮助类将会生成在次路径下 schema.setDefaultJavaPackageDao("com.lpf.greendb.db.helper"); addTaskDetail(schema); try { //'..'代表当前目录,接着就是个人的项目路径 new DaoGenerator().generateAll(schema, "../greenDB/app/src/main/java/"); } catch (Exception e) { e.printStackTrace(); } }}
右键ExampleDaoGenerator文件,run ExampleDaoGenerator.main(),自动生成代码
操作数据库
创建MyApplication对象
初始化DaoMaster和DaoSession
public class MyApplication extends Application { private static DaoMaster daoMaster; private static DaoSession daoSession; @Override public void onCreate() { super.onCreate(); } /** * 得到DaoMaster对象 * * @param context * @return */ public static DaoMaster getDaoMaster(Context context) { if (null == daoMaster) { //第一个参数,上下文对象,第二个参数库名 DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(context, "GREENDB", null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } return daoMaster; } /** * 得到DaoSession对象 * * @param context * @return */ public static DaoSession getDaoSession(Context context) { if (daoSession == null) { if (daoMaster == null) { daoMaster = getDaoMaster(context); } daoSession = daoMaster.newSession(); } return daoSession; }}
创建一个用于操作User表的helper
public class DBHelper { private static DBHelper dbHelper; private DaoSession daoSession; private UserDao userDao; private static Context mContext; public DBHelper() { } public static DBHelper getinstance(Context context) { if (null == dbHelper) { dbHelper = new DBHelper(); if (null != context) { mContext = context.getApplicationContext(); dbHelper.daoSession = MyApplication.getDaoSession(mContext); dbHelper.userDao = dbHelper.daoSession.getUserDao(); } } return dbHelper; } /** * 根据id查询 * * @param id * @return */ public User loadUser(long id) { return userDao.loadByRowId(id); } /** * 获取所有 * * @return */ public List<User> loadAll() { return userDao.loadAll(); } /** * 添加 * * @param user * @return */ public long saveUser(User user) { return userDao.insertOrReplace(user); } /** * 根据条件查询 * * @param where * @param query * @return */ public List<User> queryUser(WhereCondition where, WhereCondition... query) { if (null == query) return userDao.queryBuilder().where(where).build().list(); else return userDao.queryBuilder().where(where, query).build().list(); } /** * 添加多个 * * @param users */ public void saveUsers(final List<User> users) { if (null == users && users.size() == 0) return; userDao.getSession().runInTx(new Runnable() { @Override public void run() { for (int i = 0; i < users.size(); i++) { userDao.insertOrReplace(users.get(i)); } } }); } /** * 删除 * * @param user */ public void delUser(User user) { userDao.delete(user); }}
activity操作代码如下
public class MainActivity extends AppCompatActivity { @InjectView(R.id.toolbar) Toolbar toolbar; @InjectView(R.id.id) EditText id; @InjectView(R.id.name) EditText name; @InjectView(R.id.age) EditText age; @InjectView(R.id.phone) EditText phone; @InjectView(R.id.insert) Button insert; @InjectView(R.id.getall) Button getall; @InjectView(R.id.update) Button update; @InjectView(R.id.query) Button query; @InjectView(R.id.getbyid) Button getbyid; @InjectView(R.id.inserts) Button inserts; @InjectView(R.id.del) Button del; @InjectView(R.id.msg) TextView msg; @InjectView(R.id.fab) FloatingActionButton fab; DBHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); setSupportActionBar(toolbar); dbHelper = DBHelper.getinstance(this); } @OnClick({R.id.insert, R.id.getall, R.id.update, R.id.query, R.id.getbyid, R.id.inserts, R.id.del}) public void onClick(View view) { switch (view.getId()) { case R.id.insert: if (null != getUser()) { dbHelper.saveUser(getUser()); showMsg(dbHelper.loadAll()); Toast.makeText(this, "添加成功!", Toast.LENGTH_LONG).show(); } break; case R.id.getall: showMsg(dbHelper.loadAll()); Toast.makeText(this, "查询成功!", Toast.LENGTH_LONG).show(); break; case R.id.update: if (null != getUser()) { User user = getUser(); user.setId(1l); dbHelper.saveUser(user); Toast.makeText(this, "修改成功!", Toast.LENGTH_LONG).show(); showMsg(dbHelper.loadAll()); } break; case R.id.query: showMsg(dbHelper.queryUser(UserDao.Properties.Age.eq(12))); Toast.makeText(this, "查询成功!", Toast.LENGTH_LONG).show(); break; case R.id.getbyid: msg.setText(dbHelper.loadUser(1).toString()); Toast.makeText(this, "查询成功!", Toast.LENGTH_LONG).show(); break; case R.id.inserts: break; case R.id.del: dbHelper.delUser(dbHelper.loadAll().get(1)); showMsg(dbHelper.loadAll()); Toast.makeText(this, "删除成功!", Toast.LENGTH_LONG).show(); break; } } public User getUser() { User user = new User(); try { if (null != id.getText()) user.setUserId(id.getText().toString()); if (null != name.getText()) user.setUsername(name.getText().toString()); if (null != age.getText()) user.setAge(Integer.parseInt(age.getText().toString())); if (null != phone.getText()) user.setPhone(phone.getText().toString()); } catch (Exception e) { e.printStackTrace(); user = null; } return user; } public void showMsg(List<User> users) { if (null != users && users.size() > 0) { String msg = ""; for (User user : users) { msg = msg + user.toString() + "\n"; } this.msg.setText(msg); } else { this.msg.setText(null); } }}
效果如下
这里只涉及到基础的单表的基础操作,还有更多涉及到更复杂的或者多表操作的,还需进一步研究,对于前端,大部分应用只需要简单的操作基础数据,因此基本已经足够使用了。
github源码
0 0
- GreenDao数据库的使用
- GreenDao数据库的使用
- GreenDao(数据库)的使用
- 数据库之greenDAO 的使用
- GreenDao数据库框架的使用
- Android--------GreenDao数据库的使用
- Android数据库 GreenDao的使用
- Android greenDao 数据库的使用(一)
- Android greenDao 数据库的使用(二)
- Android greenDao 数据库的使用(三)
- Android数据库操作--greenDAO的入门使用
- android 数据库greenDao的简单使用
- Android数据库之greendao的基本使用
- GreenDao的基本使用(android数据库)
- (数据库)Greendao的使用与创建
- GreenDao数据库简单使用
- Android 数据库 GreenDao使用
- greenDao 数据库框架 使用
- JavaScript对象操作之浅复制
- luarocks学习
- 利用图像在水平和垂直方向上的差分运算对图像进行边缘检测
- git-flow学习
- javascript 面向对象特性之继承
- GreenDao数据库的使用
- mysql ”Invalid use of null value“ 解决方法
- 设计模式之工厂方法和抽象工厂
- Android Studio代码折叠
- MD5加密和解密,可作为工具类模块保存
- PHP单元测试phpunit
- SpringMVC中使用patchca生成验证码
- RFS连接sqlite和mysql数据库方法与脚本实例
- SpringMVC总结之配置