当前位置: 萬仟网 > IT编程>软件设计>面向对象 > 安卓基础学习|框架OrmLite使用

安卓基础学习|框架OrmLite使用

2021年01月15日  | 萬仟网IT编程  | 我要评论
目录写在前面的话一、基础知识(一)概述(二)设置对应关系(三)增删改查二、任务练习03三、补充写在前面的话1、主要参考自:https://b23.tv/9P0Nrd2、内容如果有不对的,希望可以指出或补充。3、新知识。一、基础知识(一)概述对象关系映射(Object Relational Mapping,简称ORM):是通过使用描述对象和数据库之间映射(对应关系,如类与表就是类的成员变量和表的列一 一对应,对象与表的行一 一对应)的元数据,将面向对象语言程序中的对象自动持久化到关系数据库

写在前面的话

1、主要参考自:https://b23.tv/9P0Nrd
2、内容如果有不对的,希望可以指出或补充。
3、新知识。

一、基础知识

(一)概述

对象关系映射(Object Relational Mapping,简称ORM):

是通过使用描述对象和数据库之间映射(对应关系,如类与表就是类的成员变量和表的列一 一对应,对象与表的行一 一对应)的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质就是将数据从一种形式转换到另一种形式。

常用的ORM框架(基于以上概念):

OrmLite(简单)、SugarORM、GreenDAO(高效)、Active Android、Realm。前面三种都是用Java语言编写的,最后一种是C语言。不同点在于它们各自的侧重点不一样。

步骤(括号二到三的总体步骤):引入依赖→定义Person类→定义表与对象的对应关系→表存于数据库,创建(由关系生成)表→Dao对象

(二)设置对应关系

1、依赖(释:5.0版本的,不是最新版的):

将 implementation ‘com.j256.ormlite:ormlite-android:5.0’ 放入如下位置。
在这里插入图片描述
2、定义数据库与表的关系:

① 示列

新建一个类(Person.java),编写如下。

package com.example.testormlite;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

// 将Person类与person表建立对应关系,也就是映射
//创建了一个名为person的表
@DatabaseTable(tableName = "person")

public class Person {
    //将成员变量与表的列对应(一 一对应)
    //generatedId = true表示定义成主键  
    // 一般id(字段名)都自定义
    @DatabaseField(columnName = "id",generatedId = true)
    public Integer id;
    @DatabaseField(columnName = "name")
    public String name;
    @DatabaseField(columnName = "age")
    public Integer age;

    //必须要有个无参构造方法(Ormlite)
    public Person() {
    }

    public Person(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    //方便打印对象的成员变量
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

在这里插入图片描述

(三)增删改查

① 实现增删改查

在MainActivity.java中,编写如下。

package com.example.testormlite;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

import java.sql.SQLException;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    //表必须在数据库中,表必须创建才能用
    //再定义一个类
    //数据库
    class Test extends OrmLiteSqliteOpenHelper {
        public Test(Context context) {
            //参数1:上下文,参数2:数据库名。(重点)
            // 参数3:工厂(不用管),参数4:版本
            super(context, "test.db", null, 1);
        }
        @Override
        public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
            //在test.db数据库创建成功后,创建表(以便将对象存到表中,或将表中数据赋值给对象)
            try {
                //根据类上的对应关系生成表(实现表必须在数据库中) 联系
                TableUtils.createTable(connectionSource, Person.class);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        @Override
        public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource,
                              int oldVersion, int newVersion) {
        }
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //定义对象,一个对象对应表的一行
        Person person1 = new Person(null,"luck",0);
        Person person2 = new Person(null,"ch09",0);

        
        Test test = new Test(this);
        //获取一个具有增删改查方法的对象,叫做Dao对象
        try {
            //<类,id类型>
            Dao<Person,Integer> dao = test.getDao(Person.class);
            //增加数据
            dao.create(person1);
            dao.create(person2);
            //删除
            dao.deleteById(2);
            //修改数据 先查->改值->存到数据库->更新到数据库
            Person p = dao.queryForId(1);
            p.name = "luck_ch09";
            dao.update(p);
            //查看数据 所有all
            List<Person> personDatas = dao.queryForAll();
            System.out.println("查询到的结果数据为:"+personDatas);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

② 结果展示

注:因为运行了多次(在第一次增加数据后没注意到注释掉),所以表中的数据也增加了多次。
在这里插入图片描述

二、任务练习03

明天继续

三、补充

1、ormlite官网

2、OrmLite数据库使用

3、数据访问对象(Data Access Object,简称DAO):是一个面向对象的数据库接口。适用于单系统应用程序或小范围本地分布使用。

本文地址:https://blog.csdn.net/luck_ch09/article/details/112670314

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

  • php对象浅拷贝和深拷贝

    class Demo{ } $demo = new Demo(); 1.对象的赋值是浅拷贝,共享同一个内存地址 $demoCopy1 = ... [阅读全文]
  • Eclipse开发工具常用快捷键的使用技巧

    Eclipse作为软件开发的常用工具,被很多的人所欢迎,尤其是丰富的快捷键,可以极大的提高编码的效率,下面将常用的快捷键做了整理,便于大家学习和使用... [阅读全文]
  • Netty入门系列(1) --使用Netty搭建服务端和客户端

    引言 前面我们介绍了网络一些基本的概念,虽然说这些很难吧,但是至少要做到理解吧。有了之前的基础,我们来正式揭开Netty这神秘的面纱就会简单很多。 ... [阅读全文]
  • UML用例模型和类图练习

    UML用例模型和类图练习

    1.一个小型网络水果超市,负责给用户网上订购苹果、芒果、桃子、荔枝。用户可以注册成为会员,预约、订购、查询、取消等常规动作。请设计用例模型.1) 参... [阅读全文]
  • PHP的命名空间

    1.什么是命名空间,官方文档定义为: 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统... [阅读全文]
  • 翻译 | The Principles of OOD 面向对象设计原则

    本篇概括性的介绍了OOD的设计原则,后续还有更多文章会详细剖析、吃透面向对象业务设计的原则。 ... [阅读全文]
  • OO第二单元--多线程电梯

    OO第二单元--多线程电梯

    一、设计策略 (1)单电梯: a、线程分工: elevator、request两个线程。 elevator线程主要负责乘客的接送和进出。 request... [阅读全文]
  • __del__

    [TOC] \_\_del\_\_ \_\_del\_\_也称之为析构方法 \_\_del\_\_会在对象被删除之前自动触发 run= ==== 主... [阅读全文]
  • 深层理解-栈平衡原理

    深层理解-栈平衡原理

    深层理解-栈平衡原理-底层是如何实现栈平衡的? 在iOS、android操作系统中,经常会遇到入栈出栈的操作。 那么现在操作系统已经不需要... [阅读全文]
  • 编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻

    编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻

    概述 本文是继《编写代码的「八荣八耻」(上篇)》和《编写代码的「八荣八耻」-以开关上线为荣,以自信编码为耻 》之后,编写代码的「八荣八耻」系列的第三... [阅读全文]
验证码:
Copyright © 2017-2021  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com