关于androidORMLite的一些总结

ORMLite是一种对象关系映射(Object-Relational Mapping, 简称ORM)工具,可用于读写数据。ORMLite是一个框架,更佳方便对多数据进行操作,特别是对于那些对SQL语句不熟悉的人

使用:

  1. 下载 ORMLite Jar
    首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.jar 和 ormlite-core-4.48.jar ;
  2. 创建Bean

User.java

/*
* 当定义表时,第一个建议便是使用final变量定义数据库表名和列名,
* 该方法可以简化代码的维护工作,不过本例并没用使用*/
@DatabaseTable(tableName = "tb_user") //@DatabaseTable:标明这是数据库的一张表
public class User {
    /*@DatabaseField:标明这是表中的字段
      columnName: 为该字段在数据中的列名
      generatedId:表示id为自增长*/
    @DatabaseField(generatedId = true)
    private int id;
    @DatabaseField(columnName = "name")
    private String name;
    @DatabaseField(columnName = "desc")
    private String desc;
 
    /*ORMLite需要用到无参构造方法
    * 当ORMLite需要创建User类时会使用到无参数的构造方法,
    * 并通过反射机制设置成员变量,也可以使用setter方法设置成员变量*/
    public User() {
    }
 
    public User(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
 
    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 String getDesc() {
        return desc;
    }
 
    public void setDesc(String desc) {
        this.desc = desc;
    }
}
  1. 创建数据库
    原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper
  2. public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
        //数据库文件的名称
        private static final String TABLE_NAME = "sqlit-test.db";
     
        /*userDao , 每张表对应一个*/
        private Dao<User, Integer> userDao;
     
        private DatabaseHelper(Context context) {
            super(context, TABLE_NAME, null, 2);
        }
     
        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase,
                             ConnectionSource connectionSource) {
            try{
                //创建表
              createTable(connectionSource, User.class);
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
     
        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase,
                              ConnectionSource connectionSource, int i, int i1) {
            try{
                dropTable(connectionSource, User.class, true);
                onCreate(sqLiteDatabase, connectionSource);
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
     
        private static DatabaseHelper instance;
     
        /*
        * 单例获取该Helper*/
        public static synchronized DatabaseHelper getHelper(Context context) {
            if (instance == null){
                synchronized (DatabaseHelper.class){
                    if (instance == null){
                        instance = new DatabaseHelper(context);
                    }
                }
            }
            return instance;
        }
     
        /*
        * 获得userDao*/
        public Dao<User, Integer> getUserDao() throws SQLException {
            if (userDao == null){
                userDao = getDao(User.class);
            }
            return userDao;
        }
     
        /*
        * 释放资源*/
        public void close(){
            super.close();
            userDao=null;
        }
    }

    这里我们需要继承OrmLiteSqliteOpenHelper,其实就是间接继承了SQLiteOpenHelper

    然后需要实现两个方法:

  • onCreate(SQLiteDatabase database,ConnectionSource connectionSource)

创建表,我们直接使用ORMLite提供的TableUtils.createTable(connectionSource, User.class);进行创建

  • onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion)

  • 数据库的增删改查

//增加数据
    public void testAddUser(){
        User u1 = new User("zhy", "2B青年");
        DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
        try{
            helper.getUserDao().create(u1);
            u1 = new User("zhy2", "2B青年");
            helper.getUserDao().create(u1);
            u1 = new User("zhy3", "2B青年");
            helper.getUserDao().create(u1);
            u1 = new User("zhy4", "2B青年");
            helper.getUserDao().create(u1);
            u1 = new User("zhy5", "2B青年");
            helper.getUserDao().create(u1);
            u1 = new User("zhy6", "2B青年");
            helper.getUserDao().create(u1);
 
            testList();
 
        }catch (SQLException e){
            e.printStackTrace();
        }
    }
 
    //删除数据
    public void testDeleteUser(){
        DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
        try{
            helper.getUserDao().deleteById(2);
        }catch (SQLException e){
            e.printStackTrace();
        }
    }
 
    //更新数据
    public void testUpdateUser(){
        DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
        try{
            User u1 = new User("zhy-android", "2B青年");
            u1.setId(3);
            helper.getUserDao().update(u1);
        }catch (SQLException e){
            e.printStackTrace();
        }
    }
 
    //查询数据
    public void testList(){
        DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
        try {
            User u1 = new User("zhy-android", "2B青年");
            u1.setId(2);
            List<User> users = helper.getUserDao().queryForAll();
            Log.e("TAG", users.toString());
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢听风的人

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值