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


    一、xUtils框架使用方法

    准备工作

    第一步:引入依赖

    implementation 'org.xutils:xutils:3.8.5'
    
    • 1

    在这里插入图片描述

    第二步:添加权限

    
    
    
    
    • 1
    • 2
    • 3

    AndroidManifest.xml文件application 节点里添加

    android:requestLegacyExternalStorage="true"
    android:usesCleartextTraffic="true"
    
    • 1
    • 2

    在这里插入图片描述

    第三步:MainActivity中添加

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

    在这里插入图片描述

    二、数据库映射

    原生数据库:通过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 + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    在对数据库操作前,先创建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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    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;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    可以发现我们对数据库的操作实际上是对对象的操作,省去了很多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;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

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

    2.根据条件删除

                    DbManager db = null;
                    try {
                        db = x.getDb(daoConfig);
                        db.delete(User.class,
                                WhereBuilder.b("age", "=",24));
    
                    } catch (DbException e) {
                        e.printStackTrace();
                        return;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    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;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    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;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    在这里插入图片描述

    5.查询数据

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

                    DbManager db = null;
                    try {// 删除1
                        db = x.getDb(daoConfig);
                        List 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;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    2.查询所有数据

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

                    DbManager db = null;
                    try {// 删除1
                        db = x.getDb(daoConfig);
                        List users = new ArrayList<>();
                        users= db.selector(User.class).findAll();
                        for (User user : users){
                            Log.i("userdb","数据:" + user);
                        }
    
                    } catch (DbException e) {
                        e.printStackTrace();
                        return;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

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

  • 相关阅读:
    mysql与oracle的区别
    selenium 文件上传方法
    视频编解码 — DCT变换和量化
    [附源码]Python计算机毕业设计Django财务管理系统
    大数据技术之Hive+Flume+Zookeeper+Kafka详解
    Rasa NLU中的组件
    【C语言】指针那些事之数组传参和指针传参的区别
    软件工程概述----- Scrum敏捷开发
    springBoot--web--http缓存机制测试
    解决IDEA中maven无法引进okhttp依赖
  • 原文地址:https://blog.csdn.net/qq_48435252/article/details/125875189