Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包


一.准备工作
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
<Button
android:id="@+id/btn_create_save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建表 | 保存数据" />
二.Bean类
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
package com.lgl.ormlite;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
/**
* bean类,对应的整个数据库的表单信息,帮助我们映射到整个数据库当中
* Created by LGL on 2016/6/26.
*/
//配置表名
@DatabaseTable(tableName = "user_info")
public class User {
//配置主键 id
@DatabaseField(generatedId = true)
private int id;
//名称
@DatabaseField(columnName = "name")
private String name;
//描述
@DatabaseField(columnName = "desc")
private String desc;
//空构造
public User(){
}
//构造方法
public User(int id, String name, String desc) {
this.id = id;
this.name = name;
this.desc = desc;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
三.Dao类
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
package com.lgl.ormlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
/**
* Dao类
* Created by LGL on 2016/6/26.
*/
public class DataBaseHelper extends OrmLiteSqliteOpenHelper {
//创建数据库名称
private static final String DATABASE_NAME = "ormlite_sql.db";
//版本号
private static final int DATABASE_VERSION = 1;
//存放Dao
private Map<String, Dao> maps = new HashMap<>();
//单例模式
private static DataBaseHelper instance;
public static synchronized DataBaseHelper getInstance(Context context) {
if (instance == null) {
synchronized (DataBaseHelper.class) {
if (instance == null) {
instance = new DataBaseHelper(context);
}
}
}
return instance;
}
/**
* 获得数据库的访问对象
*
* @param cls
* @return
* @throws SQLException
*/
public synchronized Dao getDao(Class cls) throws SQLException {
Dao dao = null;
//通过反射获得类的名称
String clsName = cls.getSimpleName();
//是否存在该对象
if (maps.containsKey(clsName)) {
dao = maps.get(clsName);
} else {
dao = super.getDao(cls);
maps.put(clsName, dao);
}
return dao;
}
/**
* 关闭所有操作
*/
public void close() {
super.close();
//获取所有的map键值对置空
for (String key : maps.keySet()) {
Dao dao = maps.get(key);
dao = null;
}
}
//构造方法
public DataBaseHelper(Context context) {
//上下文,数据库名,null,版本号
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建数据库
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
//对数据库的创建以及表的建立
TableUtils.clearTable(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
//更新数据库
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
try {
//调用更新就删除数据库
TableUtils.dropTable(connectionSource, User.class, true);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
四.UserDao类
package com.lgl.ormlite;
import android.content.Context;
import com.j256.ormlite.dao.Dao;
import java.sql.SQLException;
/**
* 数据库操作类
* Created by LGL on 2016/6/26.
*/
public class UserDao {
//上下文
private Context mContext;
//主键查询
private Dao<User,Integer>userDao;
//Dao类
private DataBaseHelper helper;
public UserDao(Context mContext) {
this.mContext = mContext;
//创建数据库
helper = DataBaseHelper.getInstance(mContext);
try {
//操作Dao
userDao = helper.getDao(User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addUser(User user){
try {
userDao.create(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
五.增
//点击事件
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_create_save:
userDao = new UserDao(this);
User user = new User();
user.setName("lgl");
user.setDesc("Android");
userDao.addUser(user);
break;
}
}
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
case R.id.btn_create_save:
User user = new User();
user.setName("lgl");
user.setDesc("Android");
userDao.addUser(user);
User user1 = new User();
user.setName("zhangsan");
user.setDesc("IOS");
userDao.addUser(user1);
User user2 = new User();
user.setName("lisi");
user.setDesc("python");
userDao.addUser(user2);
break;
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
六.改
//更新User
public void updateUser(User user) {
try {
userDao.update(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
<Button
android:id="@+id/btn_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改数据" />
case R.id.btn_update:
//我们可以修改id为1的这个数据
User user3 = new User();
user3.setId(1);
user3.setName("lgl帅哥");
userDao.updateUser(user3);
break;
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
/**
* 根据ID来更新
* @param user
* @param id
*/
public void updateById(User user,Integer id){
try {
userDao.updateId(user,id);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 修改数据,支持多条
*
* @param user
*/
public void updateUserByBuilder(User user) {
try {
UpdateBuilder builder = userDao.updateBuilder();
builder.updateColumnValue("name", user.getName()).where().eq("id", 1);
builder.update();
} catch (SQLException e) {
e.printStackTrace();
}
}
七.删除
/**
* 删除
*
* @param user
*/
public void deleteUser(User user) {
//删除的方法比较多,根据的条件也比较多
try {
userDao.delete(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 多个对象的删除操作
*
* @param users
*/
public void deleteMulUser(List<User> users) {
try {
userDao.delete(users);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 根据ID删除
*
* @param ids
*/
public void deleteUserById(List<Integer> ids) {
try {
userDao.deleteIds(ids);
} catch (SQLException e) {
e.printStackTrace();
}
}
八.查
/**
* 全部查询
*
* @return
*/
public List<User> listAll() {
try {
return userDao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
<Button
android:id="@+id/btn_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据" />
/**
* 查询单张表
*
* @return
*/
public List<User> queryBuilder() {
List<User> list = null;
//查询器
QueryBuilder<User, Integer> queryBuilder = userDao.queryBuilder();
//声明where条件
Where<User, Integer> where = queryBuilder.where();
//查询sesc字段的name是哪个值
try {
where.eq("name", "lgl");
where.and();
where.eq("desc", "Android");
where.prepare();
list = queryBuilder.query();
//select * from user_info where name = 'lgl' and desc = 'Android'
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
case R.id.btn_query:
List<User> list = userDao.queryBuilder();
Log.i(TAG, list.toString());
break;
![Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包-LMLPHP]()
/**
* 多条件查询
*
* @return
*/
public List<User> queryBuilders() {
List<User> list = null;
QueryBuilder<User, Integer> queryBuilder = userDao.queryBuilder();
Where<User, Integer> where = queryBuilder.where();
try {
where.or(where.and(where.eq("", ""), where.eq("", "")), where.and(where.eq("", ""), where.ge("", ""))).query();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
欢迎加群:555974449