xUtils3中对Sqlite数据库的操作
来源:互联网 发布:win10开机windows聚焦 编辑:程序博客网 时间:2024/05/21 10:02
前言
xUtils是一款快速开发android移动应用的框架,其包含了很多实用的android工具.
目前xUtils主要有四大模块:
- DbUtils模块
- ViewUtils模块
- HttpUtils模块
- BitmapUtils模块
xUtils项目github请见:xUtils
由于xUtils3 api变化较多, 已转至xUtils3
- 本文使用的xUtils版本为v3.1.22
DbUtils
- android中的orm框架,一行代码就可以进行增删改查;
- 支持事务,默认关闭;
- 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆> - 的时候请注解表名和列名);
- 支持绑定外键,保存实体时外键关联实体自动保存或更新;
- 自动加载外键关联实体,支持延时加载;
- 支持链式表达查询,更直观的查询语义
xutils3_db
通过androidStudio新建工程xutils3_db,引入xUtils3依赖:
在${project_dir}/build.gradle(Module:app)的dependencies函数内添加compile ‘org.xutils:xutils:3.1.22’ 。然后构建一下就引入了xUtils3框架添加相关权限
在清单文件src/main/AndroidManifest.xml的manifest节点下添加
- 1
- 2
- 1
- 2
xUtil的初始化
新建android.app.Application继承类me.kevingo.xutils3_db.MyApplication,复写onCreate()方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在清单文件src/main/AndroidManifest.xml的Application节点添加属性android:name=”me.kevingo.xutils3_db.MyApplication”
通过以上的操作,就可以在代码中使用xUtils3的相关Api了
Entity
xUtils3中的DB模块提供了两个核心注解即org.xutils.db.annotation.Column和org.xutils.db.annotation.Table注解
- 加注了@Table的实体类将被映射到sqlite中的数据库表,@Table注解有属性name和onCreated两个属性,name属性决定了该实体类映射的数据库表名,而onCreated属性则可以用来添加表一级的属性或约束,例如创建联和唯一索引等
- 加注了@Column的实体类属性将会映射到sqlite数据库中的字段,@Column注解有name、property、isId、autoGen属性,name属性决定了实体类属性对应的数据库字段名;property属性可以用来添加数据库中字段一级的属性或约束条件例如not null,索引等;isId属性表示该字段是否是主键,默认为false;autoGen则表示如果一个字段为主键,是否自增长,默认为true,所以该字段只有在isId属性为true时有效.
- 未加注@Column注解的字段将不映射sqlite字段
新建User类
在me.kevingo.xutils3_db.entity包下新建User类,并添加@Table和@Column注解进行ORM映射
- 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
- 62
- 63
- 64
- 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
- 62
- 63
- 64
- 如果需要添加联合唯一索引则可以在@Table注解加上onCreated = “CREATE UNIQUE INDEX unique_name ON table_name(column1, column2)”) 为表创建column1,column2联合唯一索引
获取DbManager
org.xutils.DbManager集成了所有对数据库表的操作,类似于SpringJDBC,Hibernate等服务端ORM框架的SessionTemplate,DaoTemplate类,我们可以通过如下获取该对象
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
新增实体记录
新增实体记录或者实体记录List可以通过org.xutils.DbManager#save或者#saveOrUpdate或者#saveBindingId方法,这三个方法内部会判断传入的是一个List<T>还是一个扁平化的Object来做相应的处理,但这三个方法虽然都能保存对象或者对象List,但又有区别:
- db.save(entity);//保存成功之后【不会】对user的主键进行赋值绑定
- db.saveOrUpdate(entity);//如果一个对象主键为null则会新增该对象,成功之后【会】对user的主键进行赋值绑定,否则根据主键去查找更新
- db.saveBindingId(entity);//保存成功之后【会】对user的主键进行赋值绑定,并返回保存是否成功
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
查询实体记录
如果要查询某张表内的所有对象, 可以通过org.xutils.DbManager#findAll(Class<T> class),根据对象的主键id来查找org.xutils.DbManager#findById(Class<T> entityType, Object idValue),当然如果只有这么几个方法来提供查找实体对象显然是不足以满足需求的,所以xUtil的作者还提供了了一个更加灵活的查询对象org.xutils.db.Selector.该对象提供了where(), and(), or(),orderBy(), groupBy(), limit(), offset(), count()等方法来实现灵活的复杂查询,而且这些方法都返回对象本身,所以可以进行链式操作.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
删除对象
删除一个对象或者对象List通过org.xutils.DbManager#deleteById(Class<T> entityType, Object idValue)来删除某个主键对应的记录,org.xutils.DbManager#delete(Object entity)方法删除某个已经存在表中的对象,org.xutils.DbManager#delete(Class<T> entityType)则会删除表中所有记录,相当于清空表数据.但如果只有以上方法来提供删除操作显然还不够灵活,如果需要根据where条件来删除符合条件的记录,则可以使用org.xutils.db.sqlite.WhereBuilder对象来达到目的,WhereBuilder对象提供了类似Selector对象的and(), or(), expr()等方法来链式操作该对象本身.复写的toString方法可以返回其对应的where条件语句.代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
更新对象
更新对象除了几个update方法外还可以通过replace方法实现.
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
通过update方法传入WhereBuilder对象和org.xutils.common.util.KeyValue对象实现对复合条件的记录更新指定的列和值
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
更加灵活的sql查询
通过org.xutils.DbManager对象中的一系列exec前缀的方法可以实现sql语句查询
- 1
- 1
一对多关系的实现
假如一个User对象对应多个Oder对象我们该如何实现映射呢?
Order实体类
- 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
- 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
在User对象增加getOrders方法:
- 1
- 2
- 3
- 1
- 2
- 3
一对多的查询:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
总结
xUitls3中DB模块的简单使用差不多就是这些,文中如有谬误,欢迎各位指正.最后,感谢xUtils框架作者wyouflf带来如此简单实用的android开发必备良药.
本文源码下载xUtils3中对Sqlite数据库的操作
- xUtils3中对Sqlite数据库的操作
- xUtils3中对Sqlite数据库的操作
- xUtils3中对Sqlite数据库的操作
- Xutils3关于数据库的操作
- QT实现对sqlite数据库的操作
- C#对Sqlite数据库的操作类
- 【Android】【xUtils3数据库的简单操作】
- XUtils3.0数据库的一些操作
- Android中,对SQLite的‘批处理’操作
- .Net中对Sqlite数据库操作封装类
- android中SQLite数据库的操作
- android中SQLite数据库的操作
- 使用SQLite中自带的API操作SQLite数据库
- SQLite数据库对数据的基本操作(一)
- SQLite数据库对数据的基本操作(二)
- xUtils3数据库的使用
- Xutils3的数据库模块
- XUtils3.0数据库操作心得
- List集合实现自定义排序
- 如何在CentOS 7上安装MySQL
- Event Hubs Receiver Epoch
- CUDA总结:同步
- java读取excel时间不对的问题
- xUtils3中对Sqlite数据库的操作
- FindObjectOfType用法
- 浅谈 &0xFF操作
- lunux卸载mysql
- Android Studio下添加library、jar包、so包
- 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
- 金融知识入门之基金基础概念
- Oracle 数据库kernel.shmmax 及kernel.sem设置
- Professional JavaScript for Web Developers 读书笔记(五)