最近才接触xUtils,看了一会才发现已更新3.0的新版本,例子简直少的可怜,还是各种互抄各种转载=。=
<!----------吐槽的分割线----------------------------————————————————————----------------->
本文主要就单表查询做一番演示(为了解耦做了一点封装):
这里一共有四步操作:
1.首先,得有个实体类吧(xUtils用注解建表)
2.新建一个DatabaseOpenHelper类,封装初始化操作,提供DbManager.DaoConfig对象(数据库辅助建立类)
3.新建一个与业务数据库操作相关的类,这里就是PersonDB类(具体业务模块实现类)
这个类会把一些常用的数据库操作封装起来
4.在Activity中使用
<!-----------实操分割线-----------------------————————————————————---------------------->
1.创建实体类
2.DatabaseOpenHelper类
3.PersonDB类
4.在Activity中使用
<!--------16/8/2/19:48更新--------------------------------------------------------------------------------------->
由于对数据库单例不熟,有以下改进写法:
DatabaseOpenHelper类:
PersonDB类:
在Activity中使用:
<!----------吐槽的分割线----------------------------————————————————————----------------->
本文主要就单表查询做一番演示(为了解耦做了一点封装):
这里一共有四步操作:
1.首先,得有个实体类吧(xUtils用注解建表)
2.新建一个DatabaseOpenHelper类,封装初始化操作,提供DbManager.DaoConfig对象(数据库辅助建立类)
3.新建一个与业务数据库操作相关的类,这里就是PersonDB类(具体业务模块实现类)
这个类会把一些常用的数据库操作封装起来
4.在Activity中使用
<!-----------实操分割线-----------------------————————————————————---------------------->
1.创建实体类
@Table(name="Person") public class Person { @Column(name = "id",isId = true) private int id; @Column(name = "name") private String name; @Column(name = "age") private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } //这里注意,要使用构造器初始化时,必须再提供一个无参构造器 //我觉得是和注解有关吧 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } //为了测试方便加个toString }
2.DatabaseOpenHelper类
public class DatabaseOpenHelper { private DbManager.DaoConfig daoConfig; public DatabaseOpenHelper(String name,int version) { daoConfig = new DbManager.DaoConfig() .setDbName(name) .setDbVersion(version) .setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { db.getDatabase().enableWriteAheadLogging(); //开启WAL, 对写入加速提升巨大(作者原话) } }) .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { //数据库升级操作 } }); } public DbManager.DaoConfig getDaoConfig(){ return daoConfig; } }
3.PersonDB类
public class PersonDB { public static final String DB_NAME = "person.db"; //数据库名 public static final int VERSION = 1; //数据库版本号 private static PersonDB personDB; private static DbManager db; //接收构造方法初始化的DbManager对象 private PersonDB(){ DatabaseOpenHelper databaseOpenHelper = new DatabaseOpenHelper(DB_NAME,VERSION); db = x.getDb(databaseOpenHelper.getDaoConfig()); } //构造方法私有化,拿到DbManager对象 public synchronized static PersonDB getIntance(){ if (personDB == null){ personDB = new PersonDB(); } return personDB; } //获取PersonDB实例 /****************************************************************************************/ //写两个测试方法,也就是常用的数据库操作 public void savePerson(Person person){ try { db.save(person); Log.d("xyz","save succeed!"); } catch (DbException e) { Log.d("xyz",e.toString()); } } //将Person实例存进数据库 public List<Person> loadPerson(){ List<Person> list = null; try { list = db.selector(Person.class).findAll(); } catch (DbException e) { e.printStackTrace(); } return list; } //读取所有Person信息 }
4.在Activity中使用
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PersonDB personDB = PersonDB.getIntance(); Person person1 = new Person("jay",20); Person person2 = new Person("wang",40); personDB.savePerson(person1); personDB.savePerson(person2); //写 List<Person> list = personDB.loadPerson(); if (list!=null) { for (Person person : list) { Log.d("xyz", person.toString()); } } //读 } }
<!--------16/8/2/19:48更新--------------------------------------------------------------------------------------->
由于对数据库单例不熟,有以下改进写法:
DatabaseOpenHelper类:
public class DatabaseOpenHelper { private DbManager.DaoConfig daoConfig; private static DbManager db; private final String DB_NAME = "mydb"; private final int VERSION = 1; private DatabaseOpenHelper() { daoConfig = new DbManager.DaoConfig() .setDbName(DB_NAME) .setDbVersion(VERSION) .setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { db.getDatabase().enableWriteAheadLogging(); //开启WAL, 对写入加速提升巨大(作者原话) } }) .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { //数据库升级操作 } }); db = x.getDb(daoConfig); } public static DbManager getInstance(){ if (db == null){ DatabaseOpenHelper databaseOpenHelper = new DatabaseOpenHelper(); } return db; } }
PersonDB类:
public class PersonDB { private DbManager db; //接收构造方法初始化的DbManager对象 public PersonDB(){ db = DatabaseOpenHelper.getInstance(); } /****************************************************************************************/ //写两个测试方法 public void savePerson(Person person){ try { db.save(person); Log.d("xyz","save succeed!"); } catch (DbException e) { Log.d("xyz",e.toString()); } } //将Person实例存进数据库 public List<Person> loadPerson(){ List<Person> list = null; try { list = db.selector(Person.class).findAll(); } catch (DbException e) { e.printStackTrace(); } return list; } //读取所有Person信息 }
在Activity中使用:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PersonDB personDB = new PersonDB(); Person person1 = new Person("jay",20); Person person2 = new Person("wang",40); personDB.savePerson(person1); personDB.savePerson(person2); List<Person> list = personDB.loadPerson(); if (list!=null) { for (Person person : list) { Log.d("xyz", person.toString()); } } }
发表评论
-
EditText默认不获得焦点的解决方法
2016-09-23 13:51 745比较简单,在EditText的[size=large]父级容器 ... -
android解决背景图片平铺拉伸问题
2016-09-19 11:56 5283最近开发时遇到一个问题: 使用一条图片(1200x128)平铺 ... -
Android中的“再按一次返回键退出程序”实现
2016-09-18 21:10 464[size=medium]private long exitT ... -
DrawerLayout的使用和背景设置去除阴影
2016-08-21 21:34 3032drawerLayout是Support Library包中 ... -
在顶部显示Snackbar:TopSnackbar
2016-08-08 14:12 2483原作者的github: https://github.com/ ... -
Android自定义属性
2016-08-04 16:17 575这里我自定义一个View来说明自定义属性的用法. Part ... -
自定义View
2016-08-04 11:30 518关于自定义View,无数大 ... -
xUtils3.0的使用(二) 网络请求
2016-07-31 19:12 1996写法还是比较简单的,但是不得不吐槽一下sample里的变量命名 ... -
xUtils3.0的使用(一)IOC
2016-07-30 21:13 1650首先,没啥说的,放上xUtils的github地址: http ... -
okHttp回调函数写法
2016-07-30 13:28 1188包装成工具类: public class OkHttpUtil ... -
仿知乎日报启动效果
2016-07-29 20:59 578[size=x-large]public class Main ... -
App启动时的欢迎界面
2016-07-29 19:30 624//其中一种实现方法 public class Welcom ... -
android:theme
2016-07-29 19:23 549android:theme="@android:st ... -
SparseArray
2016-07-26 11:24 600作用:代替HashMap 特点:提高性能 使用方法: 增: ... -
Hello World
2016-07-26 10:56 513String s = "hello world&qu ...
相关推荐
Xutils 3.0+版本对之前的版本进行了优化,提供了更高效、更简洁的API,包括对数据库操作的支持。在Android 6.0+系统上,Xutils能很好地处理数据的增删改查(CRUD)任务,这使得开发者可以专注于业务逻辑,而不是底层...
【xUtils3.0 Demo】是一个全面展示xUtils3.0功能的应用实例,它涵盖了xUtils框架中的核心组件,如网络访问、注解处理以及数据库操作等关键功能。这款Demo旨在帮助开发者更好地理解和掌握xUtils3.0在实际开发中的应用...
这个“Xutils3.0 demo”是一个完整的示例项目,涵盖了文件上传与下载、SQLite数据库操作以及HTTP网络请求这三个核心应用场景。 1. 文件上传与下载: Xutils3.0提供了方便的文件操作接口。在文件上传过程中,我们...
xUtils3.0是一款高效、轻量级的Android开源框架,由国内知名开发者WuXiaolong开发,它集成了网络请求、数据库操作、图片加载、UI绑定等多种功能,极大地提高了Android应用的开发效率。在本文中,我们将深入探讨...
本文将全面探讨xutils3.0 jar的核心功能、使用方法以及它在实际项目中的应用。 首先,xutils3.0 jar是xutils库的一个重要版本,它是一个集数据处理、网络请求、图片加载等多种功能于一体的全栈式Android开发工具。...
XUtils3.0是一个高度优化且功能强大的Java库,专为Android开发者设计,用于简化常见的开发任务,如网络请求、数据库操作、图片加载等。相较于之前的版本,XUtils3.0进行了大量改进,提高了性能和易用性。这个案例...
3. **异步处理**:对于耗时操作如网络请求和数据库操作,XUtils 3.0 支持自动异步处理,提高用户体验。 4. **缓存机制**:内置缓存策略,有效提高数据读取速度,减少网络流量。 ### 二、核心组件详解 #### 1. 网络...
xUtils3.0的数据库API经过优化,性能接近greenDao,使得数据库操作更加高效。开发者可以便捷地执行插入、查询、更新和删除等操作。 5. **HTTP实现**: 框架将HTTP实现从HttpClient替换为UrlConnection,带来了更...
1. 数据库操作:XUtils 3.0 使用了流行的ORM框架GreenDao,使得数据库操作变得极其简单,只需通过注解就能定义实体类,并自动创建表结构,进行增删查改操作。 2. 网络请求:XUtils 3.0 提供了强大的网络请求API,...
XUtils3.0是一款由国内开发者李明杰开发的轻量级Android开发框架,它整合了网络请求、数据库操作、图片加载等多种功能,旨在简化Android开发过程,提高开发效率。XUtils3.0在前代基础上进行了优化,提供了更加简洁的...
4. **自动管理资源**:XUtils3.0能够自动管理网络连接、数据库连接和内存缓存,避免资源泄露。 5. **异步处理**:支持异步操作,如网络请求、数据库操作,避免阻塞主线程,提升用户体验。 二、Http模块 1. **网络...
XUtils3.0作为其最新版本,提供了包括网络请求、图片加载、数据库操作、文件处理等多方面的功能,极大地简化了Android开发工作,提高了开发效率。 二、XUtils3.0核心功能 1. **网络请求**:XUtils3.0内置了...
XUtils3.0 提供了基于OrmLite的数据库操作支持,使得数据库操作变得简单易用。 ### 2.1 数据库配置 - 配置数据库版本,通过`DBConfig.build()`设置数据库名、版本号等信息。 - 初始化数据库,调用`DbUtils.create()...
- 使用过程中注意处理异常,特别是网络请求和数据库操作,避免因网络不稳定或数据库问题导致的程序异常。 - 及时清理无用资源,如关闭数据库连接、释放内存中的大对象等,防止内存泄漏。 **4. 示例代码** ```java /...
在Android开发中,数据存储是不可或缺的一部分,XUtils是一个强大的工具库,它为开发者提供了方便的数据操作接口,包括对SQLite数据库的增删改查以及数据库版本管理。本篇将详细介绍如何利用XUtils进行数据库操作...
本文将深入探讨xutils-3.0.jar包的内部结构和使用方法,帮助你更好地理解和应用这一工具。 首先,我们来关注xutils的核心组件——`classes.jar`。这个文件包含了xutils的所有Java类和方法实现,是xutils功能的基础...
1. **下载XUtils 3.0**:首先,你需要从可靠的源获取xutils-3.0.jar包,这通常是通过官方仓库或者第三方网站下载。 2. **创建lib目录**:在你的Android项目中,如果没有lib目录,需要手动创建一个。 3. **导入jar...
Xutils3.0.jar文件,由我个人抽取,去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架 1.xUtils中的IOC框架 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络...
xUtils3.0是一个强大的Android开发工具库,它提供了丰富的功能,包括网络请求、数据库操作、图片处理等。在本教程中,我们将深入探讨如何使用xUtils3.0来实现文件上传。 首先,我们需要了解文件上传的基本流程。...
Xutils3.0.jar文件,由我个人抽取,去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架 1.xUtils中的IOC框架 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络...