`

xUtils3.0的使用(三) 数据库操作

阅读更多
最近才接触xUtils,看了一会才发现已更新3.0的新版本,例子简直少的可怜,还是各种互抄各种转载=。=
<!----------吐槽的分割线----------------------------————————————————————----------------->

本文主要就单表查询做一番演示(为了解耦做了一点封装):
这里一共有四步操作:
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());
            }
        }
    }
0
0
分享到:
评论

相关推荐

    Xutils 3.0+ 数据库操作 增删改查

    Xutils 3.0+版本对之前的版本进行了优化,提供了更高效、更简洁的API,包括对数据库操作的支持。在Android 6.0+系统上,Xutils能很好地处理数据的增删改查(CRUD)任务,这使得开发者可以专注于业务逻辑,而不是底层...

    xUtils3.0 Demo

    【xUtils3.0 Demo】是一个全面展示xUtils3.0功能的应用实例,它涵盖了xUtils框架中的核心组件,如网络访问、注解处理以及数据库操作等关键功能。这款Demo旨在帮助开发者更好地理解和掌握xUtils3.0在实际开发中的应用...

    Xutils3.0 demo

    这个“Xutils3.0 demo”是一个完整的示例项目,涵盖了文件上传与下载、SQLite数据库操作以及HTTP网络请求这三个核心应用场景。 1. 文件上传与下载: Xutils3.0提供了方便的文件操作接口。在文件上传过程中,我们...

    Android快速开发框架xUtils3.0学习Demo

    xUtils3.0是一款高效、轻量级的Android开源框架,由国内知名开发者WuXiaolong开发,它集成了网络请求、数据库操作、图片加载、UI绑定等多种功能,极大地提高了Android应用的开发效率。在本文中,我们将深入探讨...

    xutils3.0 jar

    本文将全面探讨xutils3.0 jar的核心功能、使用方法以及它在实际项目中的应用。 首先,xutils3.0 jar是xutils库的一个重要版本,它是一个集数据处理、网络请求、图片加载等多种功能于一体的全栈式Android开发工具。...

    xUtils3.0最新案例

    XUtils3.0是一个高度优化且功能强大的Java库,专为Android开发者设计,用于简化常见的开发任务,如网络请求、数据库操作、图片加载等。相较于之前的版本,XUtils3.0进行了大量改进,提高了性能和易用性。这个案例...

    xutils 3.0 使用超详demo

    3. **异步处理**:对于耗时操作如网络请求和数据库操作,XUtils 3.0 支持自动异步处理,提高用户体验。 4. **缓存机制**:内置缓存策略,有效提高数据读取速度,减少网络流量。 ### 二、核心组件详解 #### 1. 网络...

    xUtils3.0框架学习笔记分享

    xUtils3.0的数据库API经过优化,性能接近greenDao,使得数据库操作更加高效。开发者可以便捷地执行插入、查询、更新和删除等操作。 5. **HTTP实现**: 框架将HTTP实现从HttpClient替换为UrlConnection,带来了更...

    xutils 3.0

    1. 数据库操作:XUtils 3.0 使用了流行的ORM框架GreenDao,使得数据库操作变得极其简单,只需通过注解就能定义实体类,并自动创建表结构,进行增删查改操作。 2. 网络请求:XUtils 3.0 提供了强大的网络请求API,...

    xUtils3.0 Demo(访问网络、数据库、加载图片)

    XUtils3.0是一款由国内开发者李明杰开发的轻量级Android开发框架,它整合了网络请求、数据库操作、图片加载等多种功能,旨在简化Android开发过程,提高开发效率。XUtils3.0在前代基础上进行了优化,提供了更加简洁的...

    xUtils3.0Demo

    4. **自动管理资源**:XUtils3.0能够自动管理网络连接、数据库连接和内存缓存,避免资源泄露。 5. **异步处理**:支持异步操作,如网络请求、数据库操作,避免阻塞主线程,提升用户体验。 二、Http模块 1. **网络...

    xutils3.0jair

    XUtils3.0作为其最新版本,提供了包括网络请求、图片加载、数据库操作、文件处理等多方面的功能,极大地简化了Android开发工作,提高了开发效率。 二、XUtils3.0核心功能 1. **网络请求**:XUtils3.0内置了...

    xutils3.0 module

    XUtils3.0 提供了基于OrmLite的数据库操作支持,使得数据库操作变得简单易用。 ### 2.1 数据库配置 - 配置数据库版本,通过`DBConfig.build()`设置数据库名、版本号等信息。 - 初始化数据库,调用`DbUtils.create()...

    xutils3.0版本Jar包和so文件

    - 使用过程中注意处理异常,特别是网络请求和数据库操作,避免因网络不稳定或数据库问题导致的程序异常。 - 及时清理无用资源,如关闭数据库连接、释放内存中的大对象等,防止内存泄漏。 **4. 示例代码** ```java /...

    Android xutils的数据库增删改查带数据库升级

    在Android开发中,数据存储是不可或缺的一部分,XUtils是一个强大的工具库,它为开发者提供了方便的数据操作接口,包括对SQLite数据库的增删改查以及数据库版本管理。本篇将详细介绍如何利用XUtils进行数据库操作...

    xutils-3.0.jar包

    本文将深入探讨xutils-3.0.jar包的内部结构和使用方法,帮助你更好地理解和应用这一工具。 首先,我们来关注xutils的核心组件——`classes.jar`。这个文件包含了xutils的所有Java类和方法实现,是xutils功能的基础...

    xutils-3.0jar包(附导入eclipse方法)

    1. **下载XUtils 3.0**:首先,你需要从可靠的源获取xutils-3.0.jar包,这通常是通过官方仓库或者第三方网站下载。 2. **创建lib目录**:在你的Android项目中,如果没有lib目录,需要手动创建一个。 3. **导入jar...

    Xutils3.0.jar文件,个人抽取,完整功能,单个文件

    Xutils3.0.jar文件,由我个人抽取,去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架 1.xUtils中的IOC框架 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络...

    Android使用xUtils3.0实现文件上传

    xUtils3.0是一个强大的Android开发工具库,它提供了丰富的功能,包括网络请求、数据库操作、图片处理等。在本教程中,我们将深入探讨如何使用xUtils3.0来实现文件上传。 首先,我们需要了解文件上传的基本流程。...

    安卓开发框架工具类相关-Xutils3.0.jar文件由我个人抽取去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架1.xUtils中的IOC框架2.xUtils加载图片功能3.xUtils操作数据库4.xUtils的网络请求5.不支持webpng.rar

    Xutils3.0.jar文件,由我个人抽取,去除原版支持webpng需要的so文件以及架包。使得整个只有一个Jar文件。最好用的高效开发轻量级框架 1.xUtils中的IOC框架 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络...

Global site tag (gtag.js) - Google Analytics