• Android ORMLite的使用


    概况:ORMLite是一个第三方的组件包,相当于我们Web的hibernate框架,它封装好了一系列的方法方便更好的调用

    首先先下载ORMLite是需要的包(ORMLite官网下载链接:http://ormlite.com/)
    本人使用的是(ORMLite5.0的,有需要的朋友ORMLite5.0.rar单击名称即可下载)
    下载完成后,将两个包拷贝到项目libs目录下即可以使用

    一.ORMLite实体类注解的使用http://files.cnblogs.com/files/zhaoyucong/ORMLite5.0.rar

    package com.example.entity;
    
    import com.j256.ormlite.field.DatabaseField;
    import com.j256.ormlite.table.DatabaseTable;
    
    @DatabaseTable(tableName="t_message")
    public class Message {
        
        @DatabaseField(generatedId=true)
        private int id;
        
        @DatabaseField(columnName="userName")
        private String userName;
        
        @DatabaseField(columnName="lastMessage")
        private String lastMessage;
        
        @DatabaseField(columnName="datetime")
        private String datetime;
        
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getLastMessage() {
            return lastMessage;
        }
        public void setLastMessage(String lastMessage) {
            this.lastMessage = lastMessage;
        }
        public String getDatetime() {
            return datetime;
        }
        public void setDatetime(String datetime) {
            this.datetime = datetime;
        }
    }

    @DatabaseTable 参数:tableName指定表明,没有将使用类名作为表明
    @ForeignCollectionField 表示这个表中的数据在其他表中是外键(其他表的某个字段使用@DatabaseField(foreignColumnName=一个表的id键名,foreign=true)
    @DatabaseField

    cloumnName:指定字段名,不指定则变量名作为字段名 canBeNull:是否可以为null foreignColumnName外键字段指定的外键表中的哪个字段
    dataType:指定字段的类型 defaultValue:指定默认值 指定长度
    useGetSet:指定ormlite访问变量使用set,get方法默认使用的是反射机制直接访问变量 throwIfNull,如果空值抛出异常 persisted:指定是否持久化此变量,默认true
    unique:字段值唯一 uniqueCombo整列的值唯一 index:索引
    uniqueIndex 唯一索引 foreignAutoRefresh 外键值,自动刷新 foreignAutoCreate 外键不存在时是否自动添加到外间表中

    二.OrmLiteSqliteOpenHelper类
    OrmLiteSqliteOpenHelper类是一个抽象的类要实现onCreate()和onUpgrade()两个方法,这个类类似于android的SQLiteOpenHelper方法,大家应该知道这个类的作用了(ps:不清楚的可以去看看本人前一章博客链接:http://www.cnblogs.com/zhaoyucong/p/6113911.html),唯一不相同的是SQLiteOpenHelper里的onCreate()和onUpgrade()是一个回调函数,是不需要自己手动调用,系统会自动调用,却OrmLiteSqliteOpenHelper里的恰好相反,我们可以通过getDao(实体类名称.class)方法获取到一个Dao的对象,然后我们就可以使用Dao类,完成各种各样的数据库增删改操作,Dao<T,V>包含两个泛型,第一个泛型表Dao操作的类,第二个表示操作类的主键类型
    常见的方法:
    create:插入一条数据
    createIfNotExists:如果不存在则插入
    createOrUpdate:如果指定id则更新
    queryForId:更具id查找
    update 查找出数据
    delte 删除数据
    queryBuilder()创建一个查询生成器:进行复杂查询
    deleteBuilder()创建一个删除生成器,进程复杂条件删除
    updateBuilder()创建修条件生成器,进行复杂条件修改
    使用prepare()方法生成条件使用Dao.query、Dao.delete、Dao.update方法执行

    package com.example.winxin2;
    
    import java.sql.SQLException;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.example.entity.Message;
    import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
    import com.j256.ormlite.dao.Dao;
    import com.j256.ormlite.support.ConnectionSource;
    
    public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
    
        private static final String DB_NAME = "mydata.db"; // 数据库名称
        private static final int version = 1; // 数据库版本
        //定义每一张表的成员变量,其中一个功能:关闭helper,所有DAO对象清理
        private Dao<Message, Integer> messageDao;
        
        public Dao<Message, Integer> getMessageDao() {
            if (messageDao==null){
                try {
                    messageDao = getDao(Message.class);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return messageDao;
        }
    
        public DatabaseHelper(Context context) {
            super(context, DB_NAME, null, version);
        }
    
        /*
         * 1.此方法,不会自定执行,因为它不是回调函数
         * 2.最好也不要自己调用,因为只应该执行1次
         */
        @Override
        public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
            // TODO Auto-generated method stub
            
        }
    
        /*
         * 此方法,不会自定执行,因为它不是回调函数
         */
        @Override
        public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub
            
        }
        
        @Override
        public void close() {
            super.close();
            if (messageDao!=null){
                messageDao = null;
            }
        }
    
    }

    以上就是我对ORMLite的理解

  • 相关阅读:
    Unity3D实践系列08, MonoBehaviour类的各种触发事件
    Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件
    Unity3D实践系列06,球体撞击物体游戏
    Linux tee的花式用法和pee
    bash内置命令mapfile:读取文件内容到数组
    Perl正则表达式引用
    Perl文件句柄引用
    透明代理、正向代理、反向代理的区别说明
    Perl回调函数和闭包
    一文搞懂:词法作用域、动态作用域、回调函数、闭包
  • 原文地址:https://www.cnblogs.com/zhaoyucong/p/6122064.html
Copyright © 2020-2023  润新知