Android-第十三节03xUtils-数据库框架(增删改查)详解

一、xUtils框架使用方法

准备工作

第一步:引入依赖

implementation 'org.xutils:xutils:3.8.5'

在这里插入图片描述

第二步:添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

AndroidManifest.xml文件application 节点里添加

android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true"

在这里插入图片描述

第三步:MainActivity中添加

x.Ext.init(getApplication());
x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
x.view().inject(this);//没有用到view注解可以先不用

在这里插入图片描述

二、数据库映射

原生数据库:通过sql语法来对数据库进行操作
数据库框架-xUtils:通过对对象的操作 来对数据库进行操作

第一步,创建实体类对象 User

使用框架的好处是,我们不需要像之前一样去用sql语法创建表,而是通过在实体类中添加注解表示表名,然后通过实体类中的字段刚好对应上数据库表中的字段,可以通过true来指定主键

在这里插入图片描述

package com.hnucm.a_test134;

import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;

@Table(name="user")
public class User {
    @Column(name="id",isId = true)
    public int id;

    @Column(name="sex")
    public String sex;

    @Column(name="age")
    public int age;

    @Column(name="name")
    public String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

在对数据库操作前,先创建DaoConfig 对象(作为成员变量)

    DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
            .setDbName("test.db")
            // 不设置dbDir时, 默认存储在app的私有目录.
	// .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了.
            .setDbVersion(2)
            .setDbOpenListener(new DbManager.DbOpenListener() {
                @Override
                public void onDbOpened(DbManager db) {
                    // 开启WAL, 对写入加速提升巨大
                    db.getDatabase().enableWriteAheadLogging();
                }
            })
            .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                @Override
                public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                    // TODO: ...
                    // db.addColumn(...);
                    // db.dropTable(...);
                    // ...
                    // or
                    // db.dropDb();
                }
            });

在这里插入图片描述

1.增加数据

原来增加数据还要用到sql语法,这里直接创建一个DbManager ,然后这个DbManager 可以调用save方法来增加数据,然后这个save里面传的是这个user对象

DbManager db = null;
                try {
                    db = x.getDb(daoConfig);
                    User user = new User();
                    user.setUsername("甜甜柯");
                    user.setSex("女");
                    user.setAge(24);
                    db.save(user);
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

可以发现我们对数据库的操作实际上是对对象的操作,省去了很多sql的语法

在这里插入图片描述

运行结果:
在这里插入图片描述

2.删除数据

1.根据id 删除
在点击事件中添加

DbManager db = null;
                try {
                    db = x.getDb(daoConfig);
                    User user = new User();
                    user.setId(2);
                    db.delete(user);
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述

运行结果:
在这里插入图片描述

2.根据条件删除

                DbManager db = null;
                try {
                    db = x.getDb(daoConfig);
                    db.delete(User.class,
                            WhereBuilder.b("age", "=",24));

                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

运行结果:
在这里插入图片描述

4.修改数据

1.根据id 删除

               try {
                    DbManager db = null;
                    db = x.getDb(daoConfig);
                    User user = new User();
                    user.setId(10);
                    user.setUsername("韩老二");
                    user.setSex("男");
                    user.setAge(30);
                    db.saveOrUpdate(user);
                    // db.update(user);或者用这个方法修改
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述
在这里插入图片描述

2.根据条件删除

                    DbManager db = null;
                    db = x.getDb(daoConfig);
                    db.update(User.class, WhereBuilder.b("age", "=", 24),
// WhereBuilder.b("id", "=", 1).and("isAdmin", "=", true).,
                            new KeyValue("username", "微凉"), new KeyValue("sex", "男"));
                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述

在这里插入图片描述

5.查询数据

1.根据条件查询数据
查询id=8的数据

                DbManager db = null;
                try {// 删除1
                    db = x.getDb(daoConfig);
                    List<User> users = new ArrayList<>();
                    users= db.selector(User.class).orderBy("id", true).limit(1000).where("id","=",8).findAll();
                    for (User user : users){
                        Log.i("userdb","数据:" + user);
                    }

                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

运行结果:
在这里插入图片描述

2.查询所有数据

最后我们梳理一下,查询所有数据的操作是,通过创建一个db对象,然后调用它的selector的方法,往里面传一个User.class,表示我们要去User.class这个表里面去查,然后查到的数据自动封装到一个User对象里面,由于我们这个有很多条数据,所以就封装到了一个List集合里面,findAll()就表示查询所有的数据,我们可以发现这个方法并不带有任何的sql语法

                DbManager db = null;
                try {// 删除1
                    db = x.getDb(daoConfig);
                    List<User> users = new ArrayList<>();
                    users= db.selector(User.class).findAll();
                    for (User user : users){
                        Log.i("userdb","数据:" + user);
                    }

                } catch (DbException e) {
                    e.printStackTrace();
                    return;
                }

在这里插入图片描述

数据库框架-xUtils是不是比之前的方法都简单一些!!继续加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值