当前位置:网站首页>Android-第十三节03xUtils-数据库框架(增删改查)详解
Android-第十三节03xUtils-数据库框架(增删改查)详解
2022-07-28 17:44:00 【夏屿_】
一、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是不是比之前的方法都简单一些!!继续加油!
边栏推荐
- 在矩池云快速安装torch-sparse、torch-geometric等包
- SQL audit tool self introduction owls
- Pytoch: quickly find the main diagonal elements and non diagonal elements of NxN matrix
- Application of time series database in cigarette factory
- ES6's new data container map
- 美国将提供250亿美元补贴,鼓励英特尔等芯片制造商迁回产线
- 当CNN遇见Transformer《CMT:Convolutional Neural Networks Meet Vision Transformers》
- stc12c5a60s2功能说明(STC12C5A60S2默认触发)
- Nips18 (AD) - unsupervised anomaly detection using geometric transformations using geometric augmentation
- 文章翻译软件-批量免费翻译软件支持各大翻译接口
猜你喜欢

Nips18 (AD) - unsupervised anomaly detection using geometric transformations using geometric augmentation

VAE:变分自编码器的理解与实现

WPF 实现带蒙版的 MessageBox 消息提示框

Application of time series database in bridge monitoring field

Dockler的基础用法

Cvpr19 - adjust reference dry goods bag of tricks for image classification with revolutionary neural network

Cvpr21 unsupervised anomaly detection cutpaste:self supervised learning for anomaly detection and localization

Adobe XD web design tutorial

App自动化测试是怎么实现H5测试的

ICLR21(classification) - 未来经典“ViT” 《AN IMAGE IS WORTH 16X16 WORDS》(含代码分析)
随机推荐
English article translation - English article translation software - free batch translation
New this prototype precompiled exercise
Rust 入门指南(crate 管理)
R language and data analysis practice 11 - data deletion
调用整数或字符数组函数里的参数应该传入啥
WPF 实现带蒙版的 MessageBox 消息提示框
Transformer for anomaly detection - instra "painting transformer for anomaly detection"
C language cycle sentence strengthening exercises
Streamlit machine learning application development tutorial
我的第二次博客——C语言
企业级分布式爬虫框架入门
读了三年论文,我今天才学会阅读摘要
SQL audit tool self introduction owls
SaltStack配置管理
CVPR19 - 调参干货《Bag of Tricks for Image Classification with Convolutional Neural Network》
ardupilot软件在环仿真与在线调试
Pagoda panel construction novel CMS management system source code measurement - thinkphp6.0
SaltStack入门
R语言与数据分析实战11-数据的删除
用于异常检测的Transformer - InTra《Inpainting Transformer for Anomaly Detection》