Android操作SQLite轻量级的的ORM工具
来源:互联网 发布:淘宝运营vip课程 云盘 编辑:程序博客网 时间:2024/05/18 13:05
daoutils
daoutils is a lightweight ORM util for Android to deal with SQLite.
使用
1.建立一个数据库,可以通过Navicat等工具直接生成.db文件,再继承AbstractSQLiteManger
将数据库文件存入对应位置。
public class SQLiteHelper extends AbstractSQLiteManger { /** * 构造函数 * * @param databaseName 保存的数据库文件名,如test.db * @param packageName 工程包名,如cn.flyzy2005.fzthelper,在工程的build.gradle文件可以看到 * @param databaseVersion 当前的数据库版本 * @param databaseRawId 需要写入的database文件所对应的R.raw的id,如R.id.test(把test.db文件拷贝到res下的raw下面即可) * @param context ApplicationContext */ public SQLiteHelper(String databaseName, String packageName, int databaseVersion, int databaseRawId, Context context) { super(databaseName, packageName, databaseVersion, databaseRawId, context); } @Override protected void updateDatabase(int oldVersion, int newVersion) { if(oldVersion >= newVersion) return; //根据数据库版本依次更新 for(int i = oldVersion; i < newVersion; ++i){ switch (i){ case 0: //更新操作包括4个步骤 //1.将所有表重命名成temp表 String TEMP_TABLE = "ALTER TABLE \"routeline\" RENAME TO \"_temp_routeline\""; //2.建立一个新表 //String NEW_TABLE = "CREATE TABLE \"routeline\" (\n" + //"\"ID\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n" + // "\"userName\" TEXT,\n" + // "\"RouteLine\" BLOB NOT NULL,\n" + // "\"beginDate\" TEXT NOT NULL,\n" + // "\"stopDate\" TEXT NOT NULL,\n" + // "\"upload\" INTEGER NOT NULL DEFAULT 0\n" + // ")"; //3.转移数据 String INSERT_DATA = "INSERT INTO \"routeline\" (\"ID\", \"userName\", \"RouteLine\", \"beginDate\", \"stopDate\") SELECT \"ID\", \"userName\", \"RouteLine\", \"beginDate\", \"stopDate\" FROM \"_temp_routeline\""; //4.删除temp表 String DROP_TEMP = "drop table _temp_routeline"; //依次调用getDatabase().execSQL(sql)即可 break; case 1: break; default: break; } } }}
2.建立与表对应的实体类,可以通过定义好的注解来更清楚的表明实体类与数据库表之间的关系。(包括@Primarykey(表明这个属性为主键),@Ignore(忽略这个属性,不参与映射),@ColumnAlias(表明该属性在数据库中的名称))
public class BaseBook { @PrimaryKey private int id; @Ignore private String test; @Ignore private String test1; @Ignore private String test2; //... get set}public class Book extends BaseBook{ @ColumnAlias(columnName = "name") private String name1; private String author; private String publisher; //... get set}
3.继承AbstractDao<T>
为每一个实体类建立一个Dao类,在构造函数中设置数据源以及表名,可以通过getDatabase()
获取到数据源,按照自己的需求进行操作。
public class BookDao extends AbstractDao<Book> { public BookDao() { setDatabase(BaseApplication.getInstance().getDatabase()); setTableName("book"); } public void myOpera(){ SQLiteDatabase myDatabase = getDatabase(); //...do anything you want with SQLiteDatabase }}
4.每一个Dao都可以使用所有包含在IBaseDao<T>
的方法。
interface IBaseDao<T> { /** * 根据primaryKey进行查询 * 需要设置{@link cn.flyzy2005.daoutils.anno.PrimaryKey} * * @param primaryKey 主键的值 * @return entity实例,没有则为null */ T getByPrimaryKey(Object primaryKey); /** * 根据条件条件进行查询 * * @param condition 查询条件{"name":"fly"}(封装在JSONObject中) * @return 满足条件的第一个实例,没有则为null */ T getByParams(JSONObject condition); /** * 根据条件条件进行查询 * * @param condition 查询条件{"name":"fly"}(封装在JSONObject中) * @return 所有满足条件的entity实例,没有则为空ArrayList */ List<T> listByParams(JSONObject condition); /** * 查询表中所有数据 * * @return 所有entity实例,没有则为空ArrayList */ List<T> listAll(); /** * 根据sql语句进行查询 * * @param sql sql语句 * @return 满足条件的第一个实例,没有则为null */ T getBySql(String sql); /** * 根据sql语句进行查询 * * @param sql sql语句 * @return 满足查询条件的entity实例,没有则为空ArrayList */ List<T> listBySql(String sql); /** * 添加一条记录 * * @param model entity实例 * @param withId 是否需要插入PrimaryKey,不插入的话就采用SQLite自带的自增策略(不插入需要设置{@link cn.flyzy2005.daoutils.anno.PrimaryKey}) * @return 是否插入成功 */ boolean insert(T model, boolean withId); /** * 根据primaryKey删除一条记录 * * @param model entity实例 * @return 是否删除成功 */ boolean delete(T model); /** * 根据Id删除一条记录 * * @param primaryKey primaryKey * @return 是否删除成功 */ boolean deleteByPrimaryKey(Object primaryKey); /** * 根据条件删除一条(多条)记录 * * @param condition 删除条件 * @return 是否删除成功 */ boolean deleteByParams(JSONObject condition); /** * 删除表中所有数据 * * @return 是否删除成功 */ boolean deleteAll(); /** * 修改一条记录,会根据传入的entity的primaryKey进行匹配修改,并且会用除primaryKey之外的所有其他属性的新值更新数据库 * * @param model 修改的entity实例 * @return 是否修改成功 */ boolean update(T model); /** * 根据条件修改一条记录,并且会用除primaryKey的所有其他属性的新值更新数据库 * * @param model 修改的entity实例 * @param condition 条件 * @return 是否修改成功 */ boolean updateByParams(T model, JSONObject condition); /** * 所有行数 * * @return int */ int count(); /** * 满足条件的所有行数 * * @param condition 条件 * @return int */ int countByParams(JSONObject condition);}
依赖
compile 'cn.flyzy2005:daoutils:1.0.1'
项目地址
https://github.com/Flyzy2005/daoutils
阅读全文
0 0
- Android操作SQLite轻量级的的ORM工具
- 快速&轻量级的 Android SQLite ORM 映射框架,尽可能的简化数据库操作。
- android轻量级数据库SQlite的工具类
- Android 轻量级sqlite orm 框架
- 轻量级的ORM框架Peewee访问sqlite数据库
- android sqlite的orm框架
- Android SQLite ORM的框架
- android 超轻量级的ORM框架
- 【玩转SQLite系列】(七)打造轻量级ORM工具类SQLiteDbUtil操作数据库
- 【玩转SQLite系列】(七)打造轻量级ORM工具类SQLiteDbUtil操作数据库
- 一个简单的Android SQLite ORM框架
- android下的轻量级Sqlite创建数据库
- peewee 一个轻量级的ORM
- Android 的轻量级orm、ioc快速开发框架(原生)
- sql2java:一个古老但稳定的轻量级的ORM工具的使用说明
- android orm工具GreenDao的使用
- 轻量级的利用Annotation方式实现Android SQLite的框架
- peewee 一个轻量级的ORM(一)
- 1044. 火星数字
- SpringBoot拦截器的使用
- 随笔:C++键盘输入
- caffe 绘制acceracy曲线 IndexError: list index out of range的解决方案
- Java面试题全集(上)
- Android操作SQLite轻量级的的ORM工具
- PAT 1002. A+B for Polynomials (25) c++版
- zookeeper客户端工具类
- 聊聊 Apache、Tomcat && 静态网页、动态网页
- 一个谷歌面试题
- 1045. 快速排序
- HDU 2544
- mysql常用sql语句
- Android_其他语言交互篇——Js、C#、C、C++