热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android数据库框架ORMLite的学习笔记

在开发APP过程中,难免会用到数据库。而Android现主要使用SQLite数据库,这里就不对SQLite做介绍了。但SQLite的数据库操作语句难免有些繁琐,而ORMLite框架很好的

       在开发APP过程中,难免会用到数据库。而Android现主要使用SQLite数据库,这里就不对SQLite做介绍了。但SQLite的数据库操作语句难免有些繁琐,而ORMLite框架很好的简化了SQLite的操作语句,所以我给大家介绍一下ORMLite的简单使用方法。使用的IDE是AndroidStudio。

    第一步:集成ORMLite的jar,在gradle中添加

                  compile 'com.j256.ormlite:ormlite-android:4.48'
                  compile 'com.j256.ormlite:ormlite-core:4.48'

    第二步:创建自己的Bean类

@DatabaseTable(tableName = "tb_personal")          //创建的表名
public class PersonanlBean {
@DatabaseField(generatedId = true) //id为主键且自动生成
    private int id;
@DatabaseField(columnName = "personal_name") //列名为persinal_name
private String name;
@DatabaseField(columnName = "personal_desc")
private String desc;

public PersonanlBean() {

}
public PersonanlBean(String name,String desc) {
this.name = name;
this.desc = desc;
}
    //利用快捷键快速生成setter、getter方法    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getDesc() {        return desc;    }    public void setDesc(String desc) {        this.desc = desc;    }}
    第三步 编写DAO类,主要是获取DAO对象,这里我们需要继承OrmLiteSqliteOpenHelper,下面的方法中都要做SQLException处理

public class DaoHelp extends OrmLiteSqliteOpenHelper{
private static final String TABLE_NAME = "sqlite-school.db";

private DaoHelp(Context context) {
super(context, TABLE_NAME, null, 7); //必须实现父类的方法,其中第二个参数是创建的数据库名,第4个参数是版本号,用于升级等操作
}

@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try{
TableUtils.createTable(connectionSource, PersonanlBean.class); //根据PersonalBean来进行创建操作
Log.i("--ormlite:", "--onCreate:");
}catch (SQLException e){
e.printStackTrace();
}
}

@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try{
TableUtils.dropTable(connectionSource, PersonanlBean.class, true); //如果版本有更新则会执行onUpgrade方法,
TableUtils.createTable(connectionSource, PersonanlBean.class); //更新数据库先删除数据库再创建一个新的
Log.i("--ormlite:", "--onUpgrade:");
}catch (SQLException e){
e.printStackTrace();
}
}
// 用单例来生成DaoHelp对象
private static DaoHelp daohelp;
public static synchronized DaoHelp getDaoHelp(Context context){
if(daohelp == null){
synchronized (DaoHelp.class){
if(daohelp == null) daohelp = new DaoHelp((context));
}
}
return daohelp;
}
//利用生成的daoHelp对象来生成Dao对象,该对象是处理数据库的关键要素
private Dao, Integer> dao;
public Dao,Integer> getDao() throws SQLException{
if(dao == null){
dao = getDao(PersonanlBean.class);
}
return dao;
}
//释放资源
@Override
public void close(){
super.close();
Log.i("--ormlite:", "--close:");
dao = null;
}
}
       第四步 就是我们的数据库处理了,由于是学习,我没有做太多的UI处理,这里可能需要读者自己做下简单的UI调整,我就不做太多xml文件的描述了

直接上方法吧 

      * 获取DaoHelp对象

       DaoHelp help = DaoHelp.getDaoHelp(this);

      1:添加数据

    //添加数据
for(int i = 0; i <5; i++) {
String str1 = "name" + i;
String str2 = "desc" + i;
PersonanlBean persOnal= new PersonanlBean(str1, str2);
help.getDao().createIfNotExists(personal); //这里create的相关方法有很多就不一一描述了
}
      2:删除数据

    // 创建Builder类进行复杂的where删除
DeleteBuilder, Integer> deleteBuilder = help.getDao().deleteBuilder();
deleteBuilder.where().le("id",4); //id小于等于4的条件删除
deleteBuilder.delete();

//多id删除
ArrayList ids = new ArrayList() {};
ids.add(7);
ids.add(8);
help.getDao().deleteIds(ids); //id在ids集合中就删除

// 直接删除
help.getDao().delete(help.getDao().queryForId(9)); //指定对象删除
//指定id删除
help.getDao().deleteById(10); //指定id为的删除
       3:修改数据

    UpdateBuilder updateBuilder = help.getDao().updateBuilder();     //获取Builder对象
updateBuilder.where().eq("id", 15); //当id为15时准备修改
updateBuilder.updateColumnValue("personal_name", "sasasasasas"); //把id为15的数据进行修改
updateBuilder.update(); //执行修改操作
        4:查找数据

    // id查找,查找id为11的数据
PersonanlBean pForId = help.getDao().queryForId(11);
if(pForId != null) {
Log.i("--ormlite", "--pForIdId:" + pForId.getId() + "--pForIdName:" + pForId.getName());
}
// 字段查找,查找personal_name列名中有“name1”的所有数据,返回时集合
List pForEq = help.getDao().queryForEq("personal_name", "name1");
for (PersonanlBean str : pForEq) {
Log.i("--ormlite", "--pForEqId:" + str.getId() + "--pForEqName:" + str.getName());
}
// where查找,id小于5
List pWheres = help.getDao().queryBuilder().where().le("id", 10).query();
for (PersonanlBean str : pWheres) {
Log.i("--ormlite", "--pWheres:" + str.getId() + "--pWheres:" + str.getName());
}
    // 整体查找,遍历
QueryBuilder, Integer> queryBuilder = help.getDao().queryBuilder();
List persOnals= queryBuilder.query();
for (PersonanlBean str : personals) {
Log.i("--ormlite", "--personals" + str.getId() + ":" + str.getName());
}


总结:由于自己水平有限,写的技术含金量很低,分享的水平有限,希望各位不吝赐教,有疑问或什么的欢迎私聊,总之希望您对我的博客进行一下指点与批评。源码已上传


















推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
author-avatar
Arthur小熊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有