最近才接触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 700比较简单,在EditText的[size=large]父级容器 ... -
android解决背景图片平铺拉伸问题
2016-09-19 11:56 5161最近开发时遇到一个问题: 使用一条图片(1200x128)平铺 ... -
Android中的“再按一次返回键退出程序”实现
2016-09-18 21:10 426[size=medium]private long exitT ... -
DrawerLayout的使用和背景设置去除阴影
2016-08-21 21:34 2952drawerLayout是Support Library包中 ... -
在顶部显示Snackbar:TopSnackbar
2016-08-08 14:12 2413原作者的github: https://github.com/ ... -
Android自定义属性
2016-08-04 16:17 526这里我自定义一个View来说明自定义属性的用法. Part ... -
自定义View
2016-08-04 11:30 481关于自定义View,无数大 ... -
xUtils3.0的使用(二) 网络请求
2016-07-31 19:12 1948写法还是比较简单的,但是不得不吐槽一下sample里的变量命名 ... -
xUtils3.0的使用(一)IOC
2016-07-30 21:13 1608首先,没啥说的,放上xUtils的github地址: http ... -
okHttp回调函数写法
2016-07-30 13:28 1126包装成工具类: public class OkHttpUtil ... -
仿知乎日报启动效果
2016-07-29 20:59 540[size=x-large]public class Main ... -
App启动时的欢迎界面
2016-07-29 19:30 589//其中一种实现方法 public class Welcom ... -
android:theme
2016-07-29 19:23 479android:theme="@android:st ... -
SparseArray
2016-07-26 11:24 556作用:代替HashMap 特点:提高性能 使用方法: 增: ... -
Hello World
2016-07-26 10:56 442String s = "hello world&qu ...
相关推荐
Xutils3.0+框架数据库增删改查操作,同时支持Android6.0+系统
xUtils3.0来袭!访问网络的操作、注解的操作、数据库的操作。。完美解析你值得拥有
简单易懂的Xutils3.0 Demo,实现了访问网络(get、post),数据库的增删改查、加载网络图片。
Xutils3.0.jar文件,由我个人抽取,去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架 1.xUtils中的IOC框架 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络...
Android xutils的数据库增删改查带数据库升级 Android xutils的数据库增删改查带数据库升级
Xutils3.0.jar文件,由我个人抽取,去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架 1.xUtils中的IOC框架 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络...
使用起来非常方便。主要功能包括: 1、xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词)。 2、拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。 3、图片绑定支持gif(受系统兼容性影响...
基于Android Studio 1.5,在xUtils3.0官方Demo的基础上集成SQLCipher3.4.0,对数据库加密操作。 xUtils3.0 gitHub地址: https://github.com/DongDongZ/XUtils3.0 SQLCipher3.4.0 github地址:...
android xutils 3.0 使用超详demo xUtils3-master.zipxUtils 一个 Android 公共库框架,主要包括四个部分:View,Db, Http, Bitmap 四个模块。 View 模块主要的功能是通过注解绑定 UI,资源,事件。 Db 模块是一个...
说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤...我总是喜欢用一些最新的东西,xUtils 3.0才刚更新,是一次比较大的重构,对于百度到的使用规则,基本都是3.
android xutils使用,包括数据库,绑定控件,图片上传,网络请求
3.0是一次彻底的重构, api发生了很大变化, 但是仍然保持着xUtils一贯的简介风格, 并且新的api更加简单, 更具扩展性. 新的特性: •HTTP实现替换HttpClient为UrlConnection, 更好的兼容Android 6.0, 自动解析回调泛型...
java7 源码 ALLGO(都来) 一个可以组织活动的app,基于...数据库使用MySql数据库 数据库持久层使用Hibernate4 ##版权申明 本项目代码所有权归本团队所有 仅供个人学习使用,请勿商用 本项目部分图片资源来源于网络
动铃音乐融合了多款开源框架,包括有litepal数据库操作,slidingMenu侧边栏,xUtils框架等;动铃音乐内部包含了多个自定义控件,包括有 1)步骤进度条(用于指示歌词制作进度) 2)数值选择器(用于选择一定范围的...