Android数据库框架ORMLite的学习笔记

       在开发APP过程中,难免会用到数据库。而Android现主要使用SQLite数据库,这里就不对SQLite做介绍了。但SQLite的数据库操作语句难免有些繁琐,而ORMLite框架很好的简化了SQLite的操作语句,所以我给大家介绍一下ORMLite的简单使用方法。使用的IDE是AndroidStudio。

    第一步:集成ORMLite的jar,在gradle中添加

                  compile 'com.j256.ormlite:ormlite-android:4.48'
                  compile 'com.j256.ormlite:ormlite-core:4.48'

    第二步:创建自己的Bean类

@DatabaseTable(tableName = "tb_personal")          //创建的表名
public class PersonanlBean {
    @DatabaseField(generatedId = true)             //id为主键且自动生成
    private int id;
    @DatabaseField(columnName = "personal_name")   //列名为persinal_name
    private String name;
    @DatabaseField(columnName = "personal_desc")
    private String desc;

    public PersonanlBean() {                       

    }
    public PersonanlBean(String name,String desc) {
        this.name = name;
        this.desc = desc;
    }
    //利用快捷键快速生成setter、getter方法
    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;
    }
}
    第三步 编写DAO类,主要是获取DAO对象,这里我们需要继承OrmLiteSqliteOpenHelper,下面的方法中都要做SQLException处理

public class DaoHelp extends OrmLiteSqliteOpenHelper{
    private static final String TABLE_NAME = "sqlite-school.db";    

    private  DaoHelp(Context context) {
        super(context, TABLE_NAME, null, 7); //必须实现父类的方法,其中第二个参数是创建的数据库名,第4个参数是版本号,用于升级等操作
    }

    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {                                                                            try{
            TableUtils.createTable(connectionSource, PersonanlBean.class);   //根据PersonalBean来进行创建操作
            Log.i("--ormlite:", "--onCreate:");
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try{
            TableUtils.dropTable(connectionSource, PersonanlBean.class, true); //如果版本有更新则会执行onUpgrade方法,                                
            TableUtils.createTable(connectionSource, PersonanlBean.class); //更新数据库先删除数据库再创建一个新的
            Log.i("--ormlite:", "--onUpgrade:");
        }catch (SQLException e){
            e.printStackTrace();
        }
    }                                                                                                                                                                
    // 用单例来生成DaoHelp对象
    private static DaoHelp daohelp;
    public static synchronized DaoHelp getDaoHelp(Context context){
        if(daohelp == null){
            synchronized (DaoHelp.class){
                if(daohelp == null) daohelp = new DaoHelp((context));
            }
        }
        return daohelp;
    }                                                                                                                                                             
    //利用生成的daoHelp对象来生成Dao对象,该对象是处理数据库的关键要素
    private Dao<PersonanlBean, Integer> dao;
    public Dao<PersonanlBean,Integer> getDao() throws SQLException{
        if(dao == null){
            dao = getDao(PersonanlBean.class);
        }
        return dao;
    }
                                                                                                                                                              //释放资源
    @Override
    public void close(){
        super.close();
        Log.i("--ormlite:", "--close:");
        dao = null;
    }
}
       第四步 就是我们的数据库处理了,由于是学习,我没有做太多的UI处理,这里可能需要读者自己做下简单的UI调整,我就不做太多xml文件的描述了

直接上方法吧 

      * 获取DaoHelp对象

       DaoHelp help = DaoHelp.getDaoHelp(this);

      1:添加数据

    //添加数据
    for(int i = 0; i < 5; i++) {
       String str1 = "name" + i;
       String str2 = "desc" + i;
       PersonanlBean personal = new PersonanlBean(str1, str2);
       help.getDao().createIfNotExists(personal);     //这里create的相关方法有很多就不一一描述了                        
    }
      2:删除数据

    // 创建Builder类进行复杂的where删除
    DeleteBuilder<PersonanlBean, Integer> deleteBuilder = help.getDao().deleteBuilder();
    deleteBuilder.where().le("id",4);    //id小于等于4的条件删除
    deleteBuilder.delete();

    //多id删除
    ArrayList<Integer> ids = new ArrayList<Integer>() {};
    ids.add(7);
    ids.add(8);
    help.getDao().deleteIds(ids);        //id在ids集合中就删除

    // 直接删除
    help.getDao().delete(help.getDao().queryForId(9));  //指定对象删除
    //指定id删除
    help.getDao().deleteById(10);       //指定id为的删除
       3:修改数据

    UpdateBuilder updateBuilder = help.getDao().updateBuilder();     //获取Builder对象
    updateBuilder.where().eq("id", 15);                              //当id为15时准备修改
    updateBuilder.updateColumnValue("personal_name", "sasasasasas"); //把id为15的数据进行修改
    updateBuilder.update();                                          //执行修改操作
        4:查找数据

    // id查找,查找id为11的数据
    PersonanlBean pForId = help.getDao().queryForId(11);
    if(pForId != null) {
        Log.i("--ormlite", "--pForIdId:" + pForId.getId() + "--pForIdName:" + pForId.getName());
    }
    // 字段查找,查找personal_name列名中有“name1”的所有数据,返回时集合
    List<PersonanlBean> pForEq = help.getDao().queryForEq("personal_name", "name1");
    for (PersonanlBean str : pForEq) {
        Log.i("--ormlite", "--pForEqId:" + str.getId() + "--pForEqName:" + str.getName());
    }
    // where查找,id小于5
    List<PersonanlBean> pWheres = help.getDao().queryBuilder().where().le("id", 10).query();
    for (PersonanlBean str : pWheres) {
       Log.i("--ormlite", "--pWheres:" + str.getId() + "--pWheres:" + str.getName());
    }                                                                                                                                                                                       
    // 整体查找,遍历
    QueryBuilder<PersonanlBean, Integer> queryBuilder = help.getDao().queryBuilder();
    List<PersonanlBean> personals = queryBuilder.query();
    for (PersonanlBean str : personals) {
        Log.i("--ormlite", "--personals" + str.getId() + ":" + str.getName());
    }


总结:由于自己水平有限,写的技术含金量很低,分享的水平有限,希望各位不吝赐教,有疑问或什么的欢迎私聊,总之希望您对我的博客进行一下指点与批评。源码已上传

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值