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

Posted DylanAndroid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转SQLite系列打造轻量级ORM工具类SQLiteDbUtil操作数据库相关的知识,希望对你有一定的参考价值。

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


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

之前已经讲了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<User> 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<Map<String, Object>> list = SQLiteDbUtil.getSQLiteDbUtil().rawQuery(sql);
         Log.d(Contacts.TAG, "sql查:共" + list.size() + "个对象=" + list.toString());
     
    
     @Override
     protected void onDestroy() 
         super.onDestroy();
     
    
    

    三.GitHub

以上是关于玩转SQLite系列打造轻量级ORM工具类SQLiteDbUtil操作数据库的主要内容,如果未能解决你的问题,请参考以下文章

Android将Library上传到jcenter超简单完整步骤以及遇到的各种坑

Android将Library上传到jcenter超简单完整图文步骤以及遇到的各种坑

Java反射在Android中的应用,以及注意事项

玩转SQLite系列初识SQLite,重拾sql语句

玩转SQLite系列SQLite数据库应用案例实现历史搜索记录

玩转SQLite系列通过sql语句操作SQLite数据库