玩转SQLite系列打造轻量级ORM工具类SQLiteDbUtil操作数据库
Posted DylanAndroid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转SQLite系列打造轻量级ORM工具类SQLiteDbUtil操作数据库相关的知识,希望对你有一定的参考价值。
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53385868
本文出自【Dylanandroid的博客】
- 【玩转SQLite系列】文章目录
【玩转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超简单完整图文步骤以及遇到的各种坑