Android中数据库操作框架ActiveAndroid介绍与使用

ActiveAndroid是一种Active Record 风格的ORM框架,它可以极大的简化数据库的使用,使用面向对象的方式管理数据库,告别手写SQL历史。每一个数据库表都可以映射为一个类,开发者只需要使用类似save()或者delete()这样的函数即可。

一、添加依赖,把下面的代码添加到工程的build.gradle中:

 repositories {  
        mavenCentral()  
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }  
    }  

    compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'  

二,配置与初始化:

1,在清单文件中配置数据库名称和数据库版本号:

     <meta-data android:name="AA_DB_NAME" android:value="user.db" />
        <meta-data android:name="AA_DB_VERSION" android:value="2" />
        <meta-data android:name="AA_MODELS"  android:value="mgzxc.dbdemo.activeandroid.User"/>

通过mete-data来配置数据库名称和数据库版本号,其中AA_DB_NAME为数据库名称,AA_DB_VERSION为数据库版本号,默认为1,AA_MODELS为对应的模型。

自定义Application,需要让你的Application对象继承自com.activeandroid.app.Application而不android.app.Application。然后在清单文件的applicatin下通过name来引用,这样就完成了ActiveAndroid的初始化工作。

public class MyApp extends Application {
    //为了兼容5.0以上的手机,需添加下面的代码
    @Override
    public void onCreate() {
        super.onCreate();
        Configuration.Builder builder = new Configuration.Builder(this);
        //手动的添加模型类
        builder.addModelClasses(User.class);
        ActiveAndroid.initialize(builder.create());
    }
}

然后在清单文件的applicatin下通过name来引用:

android:name=".MyApp"  

创建Model类 (必须要加空构造函数且super()不然会有时报错)

/**
 * Created by MG_ZXC on 2018/2/4.
 * 1,必须继承Model,继承后就不用声明主键了
 * 2,按照表名添加字段
 * 3,添加注释
 */

@Table(name = "user")
public class User extends Model {
    @Column
    private String userName;
    @Column
    private int userId;
    @Column
    private int age;
    @Column
    private String addr;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public User() {
        super();
    }

    public int getUserId() {

        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", userId=" + userId +
                ", age=" + age +
                ", addr='" + addr + '\'' +
                '}';
    }
}

操作数据库的工具类

/**
 * Created by MG_ZXC on 2018/2/4.
 * 操作数据库的工具类
 */

public class DbManager {
    //添加数据
    public void insertUser(User user){
        //操作数据库的对象就是实体类本身
        user.save();
    }

    //删除数据
    public void deleteUser(User user){
        user.delete();
    }

    //更新数据
    public void updateUser(User user){
        user.setUserName("关羽");
        user.setAddr("北京");
        //在activeandroid中save既可以创建,也可以修改
        user.save();
    }

    //查询所有的数据
    public List<User> queryUser(){
        List<User> execute = new Select()
                .from(User.class) //model类
                .execute();
        return execute;
    }

    //条件查询
    public List<User> query(String userName){
        List<User> queryName = new Select()
                .from(User.class)
                .where("userName = ?", userName) //查询条件
                .execute();
        return queryName;
    }

    //条件删除
    public void delete(String userName){
        new Delete()
                .from(User.class)
                .where("userName = ?", userName)
                .execute();
    }

    //条件更新
    public void update(String userName){
        Update update = new Update(User.class);
        update.set("addr = ?","上海")
                .where("userName=?",userName)
                .execute();
    }
}

使用:

增加:

 User user = new User();  
                user.setAddr("信阳");  
                user.setAge(28);  
                user.setUserId(1);  
                user.setUserName("张飞");  
                dbManager.insertUser(user);  

查询:

 users = dbManager.query("张飞");  

删除:

 dbManager.delete("张飞");  

更新:

dbManager.update("张飞");  

数据库升级

上面的代码完全能够实现ActiveAndroid的功能了,但ActiveAndroid的数据库升级不像其他数据库升级那么简单,只需改变版本号就行了,下面介绍一下ActiveAndroid的版本升级的步骤:

1,先把数据库版本改为要升级到的版本,如改为2

2,在工程下新建assets/migrations,在该目录下增加一个修改过得版本号,比如我现在的版本号升级为2,则文件夹名为2.sql。

3,在2.sql文件夹下使用sql语句来编写版本升级新增的功能,如新增了一个字段:

 ALTER TABLE user ADD COLUMN Count INTEGER; 

OK,到这里ActiveAndroid的使用已经完成了。

通过GitHub上的ActiveAndroid在14年已经停止更新,而且本人在使用ActiveAndroid过程中发现,在高版本Android 中会报一些”莫名其妙”的Bug.

代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值