【玩转 SQLite 系列】(七) 打造轻量级 ORM 工具类 SQLiteDbUtil 操作数据库

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53385868
本文出自【DylanAndroid的博客】

之前已经讲了SQLite数据库的各种使用和操作,我们发现,每次操作起来比较麻烦。在最后,我想到自己去封装一个轻量级的操作SQLite数据库工具类,
类似于ORM对象关系映射型的数据库工具类,比较轻量级,可能功能不是那么的完美,毕竟只是个工具而已吗。

一.SQLiteDbUtil工具类超简单用法

  • 1.引入库文件

支持在build.gradle引入

compile 'cn.bluemobi.dylan:sqlitelibrary:0.1'
  • 2.支持的数据类型

支持的表字段数据类型包括:基本类型、包装类型、String类型、Date类型

    /**
     * 支持的表字段数据类型包括:基本类型、包装类型、String类型、Date类型
     */
    String[] types = {"java.lang.Integer",
            "java.lang.Double",
            "java.lang.Float",
            "java.lang.Long",
            "java.lang.Short",
            "java.lang.Byte",
            "java.lang.Boolean",
            "java.lang.Character",
            "java.lang.String",
            "java.util.Date",
            "int",
            "double",
             "long",
             "short",
             "byte",
             "boolean",
             "char",
             "float"};
  • 3.注意事项

    数据库给默认会将id作为主键并自增。

二.开始使用

  • 1.建立对象User->对应表
package cn.bluemobi.dylan.sqlite.mode;

import java.util.Date;

/**
 * Created by yuandl on 2016-11-21.
 */

public class User {
    private int id;
    private String name;
    private int age;
    private Double integral;
    private Date time;
    private boolean flag;

    public int getAge() {
        return age;
    }

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

    public int getId() {
        return id;
    }

    public User setId(int id) {
        this.id = id;
        return this;
    }

    public Double getIntegral() {
        return integral;
    }

    public User setIntegral(Double integral) {
        this.integral = integral;
        return this;
    }

    public String getName() {
        return name;
    }

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

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public boolean isFlag() {
        return flag;
    }

    public User setFlag(boolean flag) {
        this.flag = flag;
        return this;
    }

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", id=" + id +
                ", name='" + name + '\'' +
                ", integral=" + integral +
                ", time=" + time +
                ", flag=" + flag +
                '}';
    }
}
  • 2.操作代码

    package cn.bluemobi.dylan.sqlite;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.Toast;
    
    import java.util.Arrays;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    import cn.bluemobi.dylan.sqlite.contacts.Contacts;
    import cn.bluemobi.dylan.sqlite.mode.User;
    import cn.bluemobi.dylan.sqlitelibrary.JavaReflectUtil;
    import cn.bluemobi.dylan.sqlitelibrary.SQLiteDbUtil;
    
    /**
    * 通过封装的工具类操作SQLite
    * Created by Administrator on 2016-11-19.
    */
    
    public class UtilTestActivity extends AppCompatActivity {
    
    
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getSupportActionBar().setTitle("通过封装的工具类操作SQLite");
         setContentView(R.layout.ac_api_operate);
         SQLiteDbUtil.getSQLiteDbUtil().openOrCreateDataBase(this);
         Log.d(Contacts.TAG, "User类的所有信息:" + Arrays.toString(JavaReflectUtil.getAttributeNames(User.class)));
         Log.d(Contacts.TAG, "User类的所有信息:" +  Arrays.toString(JavaReflectUtil.getAttributeType(User.class)));
     }
    
     /**
      * 1.创建数据表user
      * 表名 user
      * *数据表user表结构字段
      * 主键:id
      * 名字:name
      * 年龄:age:
      *
      * @param v
      */
     public void create(View v) {
         SQLiteDbUtil.getSQLiteDbUtil().createTable(User.class);
     }
    
     /**
      * 2.删除数据表user
      *
      * @param v
      */
     public void drop(View v) {
         SQLiteDbUtil.getSQLiteDbUtil().drop(User.class);
     }
    
     /**
      * 3.给user表中新增一条数据
            *
      * @param v
      */
     public void insert(View v) {
         User user = new User();
         user.setName("张三");
         user.setAge(22);
         user.setIntegral(12.03);
         user.setTime(new Date());
         long num = SQLiteDbUtil.getSQLiteDbUtil().insert(user);
         if (num == -1) {
             Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show();
         } else {
             Toast.makeText(this, "成功插入到第" + num + "行", Toast.LENGTH_SHORT).show();
         }
     }
    
     /**
      * 4.修改user表中id为2的名字改成“李四”
     * @param v
      */
     public void update(View v) {
    
         User user = new User();
         user.setName("李四");
         user.setAge(22);
         user.setIntegral(12.03);
         int num = SQLiteDbUtil.getSQLiteDbUtil().update(user, 5);
         Toast.makeText(this, "修改了" + num + "行", Toast.LENGTH_SHORT).show();
    //        user.setName("王五");
    //        SQLiteDbUtil.getSQLiteDbUtil().update(user, "name='李四'");
     }
    
     /**
      * 5.删除user表中id为2的记录
      * @param v
      */
     public void delete(View v) {
         int num = SQLiteDbUtil.getSQLiteDbUtil().delete(User.class, 2);
         Toast.makeText(this, "删除了" + num + "行", Toast.LENGTH_SHORT).show();
    //     SQLiteDbUtil.getSQLiteDbUtil().delete(User.class,"name='李四'");
     }
    
     /**
      * 6.查询数据
      * @param v
      */
     public void query(View v) {
         List
         
           users = SQLiteDbUtil.getSQLiteDbUtil().query(User.class); if (users == null) { Log.d(Contacts.TAG, "没有数据"); return; } Log.d(Contacts.TAG, "util查:共" + users.size() + "个对象=" + users.toString()); String sql = "SELECT * FROM User"; List
          
           > list = SQLiteDbUtil.getSQLiteDbUtil().rawQuery(sql); Log.d(Contacts.TAG, "sql查:共" + list.size() + "个对象=" + list.toString()); } @Override protected void onDestroy() { super.onDestroy(); } } 
          
         

    三.GitHub

    原文作者:SQL
    原文地址: https://juejin.im/entry/583f76f9128fe10057606a59
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞