您的位置:首页 > 数据库

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

2016-11-29 09:50 585 查看
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53385868

本文出自【DylanAndroid的博客】

【玩转SQLite系列】文章目录

【玩转SQLite系列】(一)初识SQLite,重拾sql语句

【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式

【玩转SQLite系列】(三)通过sql语句操作SQLite数据库

【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库

【玩转SQLite系列】(五)SQLite数据库优化

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

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



【玩转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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐