ActiveAndroid

ActiveAndroid是一个轻量级的数据库框架,它会使用自增长的ID作为主码,只需要配置一下,就可以很方便的使用了。

1.首先引入jar包

   项目地址为https://github.com/pardom/ActiveAndroid

2.建表

以User表为例,包含userId、name、sex、age四个属性,具体代码如下

@Table(name = "User")
public class User extends Model{
    @Column(name = "userId")
    private String userId;

    @Column(name = "name")
    private String name;

    @Column(name = "sex")
    private String sex;

    @Column(name = "age")
    private int age;

    public User(){ }

    public User(String userId,String name, String sex, int age) {
        this.userId = userId;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

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

    public String getUserId() {
        return userId;
    }

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

    public String toString(){
        return "userId:"+userId+"姓名:"+name+",性别:"+sex+",年纪"+age;
    }
}

继承自Model类,@Table(name = "User") 表示表名,@Column(name = "userId")表示列名。

注意:必须要实现无参构造函数。

3.初始化

Configuration.Builder builder = new Configuration.Builder(this);
builder.addModelClass(User.class);
ActiveAndroid.initialize(builder.create());

其中,this指针是Context类型。

4.操作

这样就可以对数据库进行操作了,首先来看一下对User进行操作的封装类

public class UserModel {

    public List<User> getAllUser(){
        try{
            return new Select().from(User.class).execute();
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }

    public List<User> getAllUser(String orderBy,boolean isAsc){
        try{
            String ascOrNot = (isAsc==true)?" asc":" desc";
            return new Select().from(User.class).orderBy(orderBy+ascOrNot).execute();
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }

    public void save(List<User> list){
        for(User u : list){
            u.save();
        }
    }

    public void save(User user){
        user.save();
    }

    public void delete(User user){
        new Delete().from(User.class).where("userId = ?",user.getUserId()).execute();
    }

    public List<User> findByProperty(String property,Object value){
        try{
            return new Select().from(User.class).where(property+"=?",value).execute();
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }

}

UserModel封装了对于User的一些操作,包括save、delete、find等。

具体操作也跟SQL代码很像,比如查找所有的age = 18的User,

SQL代码:select * from User where age = 18 ;

ActiveAndroid代码:new Select().from(User.class).where(“age = ?”,18).execute() ;

5.demo

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button saveBtn;
    private Button readBtn;
    private UserModel userModel;
    private User u1,u2,u3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化配置
        Configuration.Builder builder = new Configuration.Builder(this);
        builder.addModelClass(User.class);
        ActiveAndroid.initialize(builder.create());

        saveBtn = (Button) findViewById(R.id.save_btn);
        readBtn = (Button) findViewById(R.id.read_btn);
        saveBtn.setOnClickListener(this);
        readBtn.setOnClickListener(this);

        u1 = new User("1","张三","男",18);
        u2 = new User("2","李四","男",19);
        u3 = new User("3","王五","男",20);

        userModel = new UserModel();
    }

    @Override
    public void onClick(View v) {
        if(v == saveBtn){
            u1.save();
            u2.save();
            u3.save();
        }else if (v == readBtn){
            Log.i("Main","所有的列表项");
            List<User> list = userModel.getAllUser();
            for(User u : list){
                Log.i("Main",u.toString());
            }

            Log.i("Main","找年龄19的项");
            List<User> list1 = userModel.findByProperty("age",19);
            for(User u : list1){
                Log.i("Main",u.toString());
            }

            Log.i("Main","按照年龄倒序");
            List<User> list2 = userModel.getAllUser("age",false);
            for(User u : list2){
                Log.i("Main",u.toString());
            }

            Log.i("Main","删除张三之后,所有的列表项");
            userModel.delete(u1);
            List<User> list3 = userModel.getAllUser();
            for(User u : list3){
                Log.i("Main",u.toString());
            }
        }
    }
}

执行结果为:

Catch70FA

posted @ 2016-12-07 13:57  黄大仙爱编程  阅读(136)  评论(0编辑  收藏  举报