{"id":19765784,"url":"https://github.com/xuexiangjys/xormlite","last_synced_at":"2025-10-20T10:59:57.589Z","repository":{"id":101672692,"uuid":"132489700","full_name":"xuexiangjys/XOrmlite","owner":"xuexiangjys","description":"一个方便实用的OrmLite数据库框架，支持一键集成。","archived":false,"fork":false,"pushed_at":"2023-12-15T14:52:46.000Z","size":4039,"stargazers_count":56,"open_issues_count":3,"forks_count":12,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-30T15:33:18.170Z","etag":null,"topics":["gradle","ormlite","x-library","xaop"],"latest_commit_sha":null,"homepage":"https://xuexiangjys.github.io/XOrmlite/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xuexiangjys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-07T16:46:23.000Z","updated_at":"2025-03-07T05:39:54.000Z","dependencies_parsed_at":"2025-04-30T15:31:22.489Z","dependency_job_id":"f810227d-17b6-414a-b861-5a3905207760","html_url":"https://github.com/xuexiangjys/XOrmlite","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/xuexiangjys/XOrmlite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FXOrmlite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FXOrmlite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FXOrmlite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FXOrmlite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xuexiangjys","download_url":"https://codeload.github.com/xuexiangjys/XOrmlite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FXOrmlite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280080708,"owners_count":26268354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradle","ormlite","x-library","xaop"],"created_at":"2024-11-12T04:19:26.695Z","updated_at":"2025-10-20T10:59:57.551Z","avatar_url":"https://github.com/xuexiangjys.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XOrmlite\n[![](https://jitpack.io/v/xuexiangjys/XOrmlite.svg)](https://jitpack.io/#xuexiangjys/XOrmlite)\n[![api](https://img.shields.io/badge/API-14+-brightgreen.svg)](https://android-arsenal.com/api?level=14)\n[![Issue](https://img.shields.io/github/issues/xuexiangjys/XOrmlite.svg)](https://github.com/xuexiangjys/XOrmlite/issues)\n[![Star](https://img.shields.io/github/stars/xuexiangjys/XOrmlite.svg)](https://github.com/xuexiangjys/XOrmlite)\n\n一个方便实用的OrmLite数据库框架，支持一键集成。\n\n## 关于我\n\n| 公众号   | 掘金     |  知乎    |  CSDN   |   简书   |   思否  |   哔哩哔哩  |   今日头条\n|---------|---------|--------- |---------|---------|---------|---------|---------|\n| [我的Android开源之旅](https://ss.im5i.com/2021/06/14/6tqAU.png)  |  [点我](https://juejin.im/user/598feef55188257d592e56ed/posts)    |   [点我](https://www.zhihu.com/people/xuexiangjys/posts)       |   [点我](https://xuexiangjys.blog.csdn.net/)  |   [点我](https://www.jianshu.com/u/6bf605575337)  |   [点我](https://segmentfault.com/u/xuexiangjys)  |   [点我](https://space.bilibili.com/483850585)  |   [点我](https://img.rruu.net/image/5ff34ff7b02dd)\n\n## 特征\n\n* 支持通过`@DataBase`进行数据库配置。\n\n* 支持自动生成数据库管理仓库`DataBaseRepository`。\n\n* 支持自动搜索所有的数据库表类，并自动创建数据库表。\n\n* 支持内部存储和外部存储两种数据库。\n\n* 支持自定义数据库存储位置。\n\n* 支持自定义数据库打开、升级以及降级的接口。\n\n* 支持事务操作、回滚等。\n\n* 提供了常用的数据库操作API。\n\n## 1、演示（请star支持）\n\n![][demo-gif]\n\n### Demo下载\n\n[![downloads][download-svg]][download-url]\n\n![][download-img]\n\n## 2、如何使用\n\n目前支持主流开发工具AndroidStudio的使用，直接配置build.gradle，增加依赖即可.\n\n### 2.1、Android Studio导入方法，添加Gradle依赖\n\n1.先在项目根目录的 build.gradle 的 repositories 添加:\n\n```\nallprojects {\n     repositories {\n        ...\n        maven { url \"https://jitpack.io\" }\n    }\n}\n```\n\n2.然后在应用项目(一般是app)的 `build.gradle` 的 dependencies 添加:\n\n\n```\ndependencies {\n  ...\n  implementation 'com.github.xuexiangjys.XOrmlite:xormlite-runtime:1.0.2'\n  annotationProcessor 'com.github.xuexiangjys.XOrmlite:xormlite-compiler:1.0.2'\n}\n```\n\n### 2.2、数据库注册配置\n\n1.使用`@DataBase`进行数据库注册配置。属性如下：\n\n* name ：数据库的名称，必填。\n* version ：数据库的版本, 默认版本为1\n* type ：数据库的存放类型，默认是内部存储`DataBaseType.INTERNAL`\n* path ：数据库存放的路径，只对外部存储的数据库起作用，默认的地址为：/storage/emulated/0/Android/xormlite/databases/\n\n【注意】`@DataBase`必须注册在`Application`类上才起作用。\n\n```\n@DataBase(name = \"external\", type = DataBaseType.EXTERNAL, path = \"/storage/emulated/0/xormlite/databases\")\npublic class ExternalApp extends Application {\n    @Override\n    public void onCreate() {\n        super.onCreate();\n    }\n}\n\n```\n\n2.使用`@DataBase`注册完后，请编译一下项目：build -\u003e Rebuild Project，之后会自动生成数据库管理仓库: 数据库名 + DataBaseRepository 的Java文件。文件的生成路径如下：\n\n![xormlite_databaserepository.png](https://ss.im5i.com/2021/06/15/6RxXS.jpg)\n\n例如上面我们注册的数据库名为：external，自动生成的数据库管理仓库为 ExternalDataBaseRepository。\n\n3.初始化数据库管理仓库，设置数据库实现接口。\n\n* 内部存储的数据库需要需要实现`IDatabase`接口。\n\n* 外部存储的数据库需要需要实现`IExternalDataBase`接口。\n\n```\n@DataBase(name = \"internal\", type = DataBaseType.INTERNAL)\npublic class App extends Application {\n    @Override\n    public void onCreate() {\n        super.onCreate();\n\n        InternalDataBaseRepository.getInstance()\n                .setIDatabase(new InternalDataBase())  //设置内部存储的数据库实现接口\n                .init(this);\n\n        ExternalDataBaseRepository.getInstance()\n                .setIDatabase(new ExternalDataBase(  //设置外部存储的数据库实现接口\n                        ExternalDataBaseRepository.DATABASE_PATH,\n                        ExternalDataBaseRepository.DATABASE_NAME,\n                        ExternalDataBaseRepository.DATABASE_VERSION))\n                .init(this);\n    }\n}\n```\n\n[点击查看InternalDataBase的实现](https://github.com/xuexiangjys/XOrmlite/blob/master/app/src/main/java/com/xuexiang/xormlitedemo/db/InternalDataBase.java)\n\n### 2.3、数据库服务获取\n\n数据库管理仓库DataBaseRepository提供了获取数据库操作服务的API `getDataBase`, 传入标有`@DatabaseTable`的数据库实体类Class, 获取对应的数据库操作服务`DBService`。\n\n```\nDBService\u003cStudent\u003e mDBService = InternalDataBaseRepository.getInstance().getDataBase(Student.class);\n```\n\n### 2.4、数据库操作\n\n`DBService`提供了丰富的数据库操作API，详细API请[点击参见](https://github.com/xuexiangjys/XOrmlite/blob/master/xormlite-runtime/src/main/java/com/xuexiang/xormlite/db/DBService.java)。\n\n以下简要介绍一部分API：\n\n#### 插入\n\n* insert： 插入单条数据。\n* insertData： 插入单条数据(返回被插入的对象）。\n* insertDatas： 批量添加，返回插入数据的数量。\n\n#### 查询\n\n* queryAll： 查询所有的数据。\n* queryAllOrderBy： 查询所有的数据并根据列名进行排序，返回一个对象集合。\n* queryAndOrderBy： 有条件的排序查询，返回一个对象集合。\n* queryById： 根据id查询出一条数据。\n* queryByField： 根据条件查询，返回一个对象集合。\n* queryByColumn： 根据条件查询，返回一个对象集合。\n* queryForColumnFirst： 根据条件查询，返回第一个符合条件的对象。\n* indistinctQueryForColumn： 根据条件模糊查询，返回一个对象集合。\n* queryDataBySql： 根据sql语句查询，返回对象的集合。\n* queryPage: 根据某个字段排序进行分页查询\n\n#### 更新\n\n* updateData： 使用对象更新一条记录（注意：对象必须带唯一标识ID,且该方法不能更新ID字段)。\n* updateDataByColumn： 根据某一或多个条件更新对象。\n* updateDataBySQL： 根据条件做update时直接使用sql语句进行更新，sql语句中必须包含关键字【INSERT，DELETE，UPDATE】。\n\n#### 删除\n\n* deleteData： 根据对象删除一条记录（注意：对象必须带唯一标识ID,否则方法不起作用)。\n* deleteDatas： 批量删除（注意：对象必须带唯一标识ID,否则方法不起作用)【大数据量的删除不起左右，会报too many SQL variables错误】。\n* deleteAll： 删除所有数据。\n* deleteById： 根据id删除一条记录。\n\n#### 其他\n\n* executeSql： 执行sql语句。\n* getQueryBuilder： 返回QueryBuilder。\n* getUpdateBuilder： 返回UpdateBuilder。\n* getDeleteBuilder： 返回DeleteBuilder。\n\n\n#### 事务操作\n\n* doInTransaction： 执行事务操作。\n* beginTransaction： 开启数据库事务操作。\n* commit： 提交事务。\n* rollBack： 事务回滚。\n\n### 2.5、数据库操作示例\n\n1.插入单条数据\n```\nStudent student = new Student();\nstudent.setUserName(\"xuexiang\");\nstudent.setSex(\"男\");\nstudent.setAge((int) (Math.random() * 100));\n\ntry {\n    mDBService.insert(student);\n} catch (SQLException e) {\n    e.printStackTrace();\n}\n```\n\n2.更新数据库某一字段\n```\ntry {\n    mDBService.updateDataByColumn(\"username\", \"xxxx\", \"username\", \"xuexiang\");\n} catch (SQLException e1) {\n    e1.printStackTrace();\n}\n```\n\n3.执行事务插入\n```\ntry {\n    mDBService.doInTransaction(new Callable\u003cBoolean\u003e() {\n        @Override\n        public Boolean call() throws Exception {\n            for (int i = 0; i \u003c mTempList.size(); i++) {\n                mDBService.insert(mTempList.get(i));\n            }\n            return true;\n        }\n    });\n} catch (SQLException e) {\n    e.printStackTrace();\n    ToastUtils.toast(\"事务执行失败！\");\n}\n```\n\n4.执行事务删除\n```\ntry {\n    mDBService.doInTransaction(new Callable\u003cBoolean\u003e() {\n        @Override\n        public Boolean call() throws Exception {\n            for (int i = 0; i \u003c mTempList.size(); i++) {\n                mDBService.deleteData(mTempList.get(i));\n            }\n            return true;\n        }\n    });\n    mStudentAdapter.updateList(mDBService.queryAll());\n} catch (SQLException e) {\n    e.printStackTrace();\n    ToastUtils.toast(\"事务执行失败！\");\n}\n```\n\n## 混淆配置\n\n```\n-keepattributes *DatabaseField*\n-keepattributes *DatabaseTable*\n-keepattributes *SerializedName*\n-keep class com.j256.**\n-keepclassmembers class com.j256.** { *; }\n-keep enum com.j256.**\n-keepclassmembers enum com.j256.** { *; }\n-keep interface com.j256.**\n-keepclassmembers interface com.j256.** { *; }\n```\n\n## 如果觉得项目还不错，可以考虑打赏一波\n\n\u003e 你的打赏是我维护的动力，我将会列出所有打赏人员的清单在下方作为凭证，打赏前请留下打赏项目的备注！\n\n![pay.png](https://ss.im5i.com/2021/06/14/6twG6.png)\n\n## 微信公众号\n\n\u003e 更多资讯内容，欢迎扫描关注我的个人微信公众号:【我的Android开源之旅】\n\n![gzh_weixin.jpg](https://ss.im5i.com/2021/06/14/65yoL.jpg)\n\n## 联系方式\n\n[![](https://img.shields.io/badge/点击一键加入QQ交流群-602082750-blue.svg)](http://shang.qq.com/wpa/qunwpa?idkey=9922861ef85c19f1575aecea0e8680f60d9386080a97ed310c971ae074998887)\n\n\n[demo-gif]: https://z3.ax1x.com/2021/06/15/2Hmclj.gif\n[download-svg]: https://img.shields.io/badge/downloads-1.6M-blue.svg\n[download-url]: https://github.com/xuexiangjys/XOrmlite/blob/master/apk/demo.apk?raw=true\n[download-img]: https://ss.im5i.com/2021/06/15/6Rmdj.png","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuexiangjys%2Fxormlite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxuexiangjys%2Fxormlite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuexiangjys%2Fxormlite/lists"}