xUtils3.3.x数据库操作实例
来源:互联网 发布:saas数据库 编辑:程序博客网 时间:2024/05/29 10:11
xUtils是国人开发的一款功能丰富的Android开发框架,主要包括网络请求、图片加载、数据库操作等模块,本章主要介绍xUtils3.3.x在数据库方面的使用。
要使用xUtils,需要首先在Application或主Activity中进行xUtils初始化,我的xUtils3.3.x的初始化和数据库的配置都是在Application中进行的,具体代码如下:
import android.app.Application;import android.content.SharedPreferences;import android.os.Environment;import android.os.storage.StorageManager;import android.util.Log;import com.lnint.mediaplayer.utils.Constants;import org.xutils.DbManager;import org.xutils.x;import java.io.File;import java.lang.reflect.Method;/** * xUtils3.3应用demo * Created by wangpf on 2017/7/1. */public class MyApplication extends Application { private DbManager.DaoConfig daoConfig; private static MyApplication mInstance = null; public DbManager.DaoConfig getDaoConfig() { return daoConfig; } @Override public void onCreate() { super.onCreate(); mInstance = this; x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); String rootPath = MyApplication.getExternalStoragePath(); File dbFile = new File(rootPath + "/media/db/"); daoConfig = new DbManager.DaoConfig() .setDbDir(dbFile) .setDbName("media_dbs")//创建数据库的名称 .setDbVersion(1)//数据库版本号 .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { // db.addColumn(...); // db.dropTable(...); // ... } });//数据库更新操作 }......
我们以保存并查询视频文件的播放历史为例,重点讲解对表sys_play_his的增删改查操作。
由于xUtils是一个ORM框架,所以第一步工作就是基于表sys_play_his创建实体,具体代码如下:
实体BaseEntity
import org.xutils.db.annotation.Column;/** * 实体BaseEntity * Created by wangpf on 2016/11/8. */public class BaseEntity { //id @Column(name = "id", isId = true) private int id; public int getId() { return id; } public void setId(int id) { this.id = id; }}数据库操作实体
import org.xutils.db.annotation.Column;import org.xutils.db.annotation.Table;import java.util.Date;/** * 保存媒体文件播放历史 * Created by wangpf on 2017/7/21. */@Table(name = "sys_play_his")public class PlayHisEntity extends BaseEntity { //文件名 @Column(name = "fileName") private String fileName; //播放开始时间 private Date startTime; //播放结束时间 @Column(name = "endTime") private Date endTime; //广告机编号 @Column(name = "equipNo") private String equipNo; //固件版本号 @Column(name = "firmware") private String firmware; public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getEndTime() { return endTime; } public void setEndTime(Date endTime) { this.endTime = endTime; } ......}
准备工作做好之后,就可以对数据库进行操作,具体操作如下:
(1)数据插入
DbManager db = x.getDb(((MyApplication)getApplicationContext()).getDaoConfig()); try { PlayHisEntity entity = new PlayHisEntity(); entity.setFileName("20170803120203.mp4"); entity.setEndTime(new Date()); entity.setFirmware("4.4.4"); db.saveBindingId(entity); }catch (DbException e) { e.printStackTrace(); }
(2)数据删除
DbManager db = x.getDb(MyApplication.getInstance().getDaoConfig()); try { Date date = DateUtils.getLastDay(30); db.delete(PlayHisEntity.class, WhereBuilder.b("endTime","<=",date)); }catch (DbException e) { e.printStackTrace(); }
(3)数据查询
DbManager db = x.getDb(MyApplication.getInstance().getDaoConfig()); try { if(StringUtils.isNotEmpty(playHisEntity.getFileName())) {//根据文件名查询 List<DbModel> dbModels = new ArrayList<DbModel>(); dbModels = db.selector(PlayHisEntity.class) .where("fileName","like","%"+playHisEntity.getFileName()+"%") .groupBy("fileName") .select("fileName", "count(fileName) as count").findAll(); List<VideoPlayEntity> playList = new ArrayList<VideoPlayEntity>(); for(DbModel dbModel : dbModels) { VideoPlayEntity entity = new VideoPlayEntity(); entity.setName(dbModel.getString("fileName")); entity.setNum(dbModel.getInt("count")); playList.add(entity); } }else if(playHisEntity.getStartTime() != null && playHisEntity.getEndTime() != null) {//根据时间查询 List<DbModel> dbModels = db.selector(PlayHisEntity.class) .where("endTime","between",new Date[]{playHisEntity.getStartTime(), playHisEntity.getEndTime()}) .groupBy("fileName") .select("fileName", "count(fileName) as count").findAll(); List<VideoPlayEntity> playList = new ArrayList<VideoPlayEntity>(); for(DbModel dbModel : dbModels) { VideoPlayEntity entity = new VideoPlayEntity(); entity.setName(dbModel.getString("fileName")); entity.setNum(dbModel.getInt("count")); playList.add(entity); } } }catch (DbException e) { e.printStackTrace(); }
阅读全文
1 0
- xUtils3.3.x数据库操作实例
- xUtils3.3.x注解使用实例
- xUtils3.3.x POST请求使用实例
- XUtils3.0数据库操作心得
- XUtils3.0数据库操作(转载)
- Xutils3关于数据库的操作
- xUtils3中对Sqlite数据库的操作
- 【Android】【xUtils3数据库的简单操作】
- xUtils3.0 db数据库操作笔记1
- xUtils3中对Sqlite数据库的操作
- Android xUtils3.0 数据库操作出错
- xUtils3中对Sqlite数据库的操作
- Android xUtils3.0 数据库操作出错
- XUtils3.0数据库的一些操作
- Android SQL数据库操作(使用xUtils3)
- xutils3 数据库操作,根据指定的columns列查询数据
- xUtils3.x简单使用
- xUtils3之数据库笔记
- java栈和堆在多线程运行时的访问
- Bigtable: A Distributed Storage System for Structured Data : part9 Lessons
- css和css3总结
- 数据加密(2)
- tpcc-mysql安装、使用、结果解读
- xUtils3.3.x数据库操作实例
- 【php】Array2xml类
- java.nio
- 2017年9月2日 机房模拟赛
- win32编程学习(一)
- ⑤设计模式之工厂方法模式
- 单例模式
- requireJS和seajs区别?
- hibernate--继承映射