首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一个SQLite数据库ORM的船新版本,确定不了解一下?

一个SQLite数据库ORM的船新版本,确定不了解一下?

作者头像
Xiaolei123
修改于 2022-06-19 05:46:56
修改于 2022-06-19 05:46:56
43800
代码可运行
举报
文章被收录于专栏:肖蕾的博客肖蕾的博客
运行总次数:0
代码可运行

RoomLite

GitHub链接:https://github.com/xiaolei123/RoomLite Gitee链接:https://gitee.com/xcode_xiao/RoomLite

介绍

Android平台下,使用编译期注解生成Java文件,拒绝低性能。一个SQLite数据库ORM的船新版本。增删改查建表,排序正序倒序唯一性,表索引,多线程并发读写都不在话下。确定不了解一下?

获取
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
allprojects {
    repositories {
        ...
        maven { url 'https://www.jitpack.io' }
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java:
dependencies {
    annotationProcessor 'com.github.xiaolei123:compiler:+'
    implementation 'com.github.xiaolei123:runtime:+'
}

kotlin:
dependencies {
    kapt 'com.github.xiaolei123:compiler:+'
    implementation 'com.github.xiaolei123:runtime:+'
}

版本信息

使用说明
1.创建数据库
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static class DataBase extends RoomLiteDatabase
{
    public DataBase()
    {
        // 数据库名称
        super("school");
    }
    
    // 所有的表Entity
    @Override
    public Class<?>[] getEntities()
    {
        return new Class[]{User.class};
    }
    
    // 是否允许在主线程中执行
    @Override
    public boolean allowRunOnUIThread()
    {
        return true;
    }
    
    // 数据库升级
    @Override
    public void onUpgrade(@Nullable SQLiteDatabase db, int oldVersion, int newVersion)
    {
        
    }
    
    // 数据库版本
    @Override
    public int version()
    {
        return 1;
    }
}
2.在数据库里创建表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Entity(name = "User")
public class User
{
    @Column
    @PrimaryKey(autoGenerate = true)
    public int id;

    public String name = "当前时间:" + System.currentTimeMillis();

    @Ignore
    public Bitmap bitmap;
}
2.1声明字段为主键(并且自增长),自增长只有在类型为数字类型的时候才会生效
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@PrimaryKey(autoGenerate = true)
2.2字段 NOT NULL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Column(notNull = true)
2.3字段唯一 UNIQUE
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Column(unique = true)
2.4默认值 DEFAULT
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Column( defaultValue = "0")
2.5忽略某个字段
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Ignore
public Bitmap bitmap;
2.6支持自定义字段

第一步:在表类里声明自定义类型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Entity(name = "User")
public class User
{
    public Date date;
}

第二步:继承对应的转换器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class DateConvert extends ToLongConvert<Date>
{
    public DateConvert()
    {
        super(Date.class);
    }
    @Override
    public Long convertToLong(Date javaObj)
    {
        Date date = (Date) javaObj;
        if (javaObj == null) 
            return null;
        return date.getTime();
    }
    /**
     * 从数据库的Cursor获取数据,并转换成对应 javaType 类型的数据
     *
     * @param value
     */
    @Override
    public Date cursorToJavaObject(long value)
    {
        return new Date(value);
    }
}

第三步:向RoomLite注册转换器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RoomLite.addConvert(new DateConvert());
3.创建索引 方式一
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Entity(name = "User", indices = {
        @Index(columnNames = {"id", "name"}),
        @Index(name = "index2", columnNames = {"id", "name"}),
        @Index(name = "index3", columnNames = {"id", "name"}, unique = true),
})
4.创建索引 方式二
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Column(index = true)
5.创建Dao
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Dao
public interface UserDao
{
    @Insert
    public int addUser(User user);

    @Delete
    public int deleteUser(User user);

    @Update
    public void update(User user);

    @Query(entity = User.class, limit = "0,1")
    public User query();
}
6.获取DataBase实例,获得Dao
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DataBase dataBase = RoomLite.build(DataBase.class);
UserDao dao = dataBase.getDao(UserDao.class);
7.增删改查使用
7.1增
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Insert
public int addUser(User user);
@Insert
public void addUser(User[] users);
@Insert
public void addUserList(List<User> users);
7.2删除
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Delete
public int deleteUser(User user);
@Delete
public void deleteUser(User[] users);
@Delete
public void deleteUserList(List<User> users);
7.3改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Update
public int updateUser(User user);
@Update
public void updateUser(User[] users);
@Update
public void updateUserList(List<User> users);
7.4查
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 查询所有
@Query(entity = User.class)
public List<User> queryAll();

// 查询第一个
@Query(entity = User.class, limit = "0,1")
public User query();

// 查询总数
@Query(what = "count(id)", entity = User.class)
public int queryCount();

// 查询所有的名字
@Query(what = "name", entity = User.class)
public String[] queryNames();

// 模糊查询
@Query(entity = User.class, whereClause = "name like ?")
public User[] querySearch(String name);
7.5查询分页
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Query(entity = User.class, whereClause = "name like ?",limit=@Limit(index = "0", maxLength = "30"))
7.6查询占位符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Query(entity = User.class, whereClause = "name like ?",limit=@Limit(index = "0", maxLength = "?"))
7.7查询排序-正序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Query(entity = User.class, orderBy = @OrderBy(columnNames = {"id"}, type = OrderBy.Type.ASC))
7.8查询排序-倒序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Query(entity = User.class, orderBy = @OrderBy(columnNames = {"id"}, type = OrderBy.Type.DESC))

End.

> 老群被封,+新Q群709287944

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3
随着信创产业的推进,鲲鹏arm64架构得以快速发展。而由于信创领域的主要客户通常部署在内网环境中,这使得离线部署成为该架构方案实施过程中不可或缺的关键环节。
编码如写诗
2025/06/11
4500
【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3
【信创】飞腾/鲲鹏+麒麟V4国防版-离线部署K8s+KubeSphere
随着信创政策推动和中美关系的变化,特别是在涉及国家安全的重点领域,相关企业使用国产芯片和国产操作系统,已成为关键信息基础设施建设的刚性要求。由于国内环境特殊而且很多企业项目是部署在内网和专网的,所以离线部署就成为了常用的部署方式。
编码如写诗
2025/04/27
5220
【信创】飞腾/鲲鹏+麒麟V4国防版-离线部署K8s+KubeSphere
【k8s】国产化arm架构离线环境三条命令部署k8s1.32.7+ks3.4.1
本文演示在 鲲鹏+欧拉 上使用kt离线部署一主一从的k8s1.32.7+ks3.4.1(离线包为全量包)。
编码如写诗
2025/08/12
3210
【k8s】国产化arm架构离线环境三条命令部署k8s1.32.7+ks3.4.1
【k8s】鲲鹏(arm64)+银河麒麟V10离线部署K8S+KubeSphere+Harbor
本文只演示离线部署过程,离线制品和其他安装包可查看之前文章自己制作,也可添加作者微信:sd_zdhr获取。
编码如写诗
2025/03/14
8394
【k8s】鲲鹏(arm64)+银河麒麟V10离线部署K8S+KubeSphere+Harbor
【k8s】二开kk纯离线部署更稳定的k8s1.32.7+KubeSphere3.4.1
由于最近KubeSphere的事件,离线部署私有化现在变的很有必要。这里基于3.1.10版本KubeKey,在此基础上二开为kt工具。
编码如写诗
2025/08/08
2540
【k8s】二开kk纯离线部署更稳定的k8s1.32.7+KubeSphere3.4.1
【信创】与X86体验对齐!Arm64麒麟V10系统K8s多机一键离线部署
基于此,在之前KubeSphere之魔改KubeKey以支持自定义Harbor版本 的基础上进一步修改kk以支持arm版harbor。同时将麒麟V10操作系统依赖包制作为ISO,并将镜像打包至制品中,实现与X86制品相同效果。
编码如写诗
2025/03/21
4233
【信创】与X86体验对齐!Arm64麒麟V10系统K8s多机一键离线部署
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(二)
实际上只要kubesphere.tar.gz就够了,为了大家熟悉过程和展示,这里进行了拆分。百度云地址:https://pan.baidu.com/s/1lKtCRqxGMUxyumd4XIz4Bg?pwd=4ct2‍
编码如写诗
2024/08/30
1.9K3
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(二)
【k8s】arm架构离线部署k8s1.32.7+ks4.1.3
本文将演示在arm架构的机器上离线部署k8s 1.32.7+ks4.1.3,若有其他需要可添加我微信好友sd_zdhr。
编码如写诗
2025/08/12
3240
【k8s】arm架构离线部署k8s1.32.7+ks4.1.3
【信创-k8s】海光/兆芯+银河麒麟V10离线部署k8s1.31.8+kubesphere4.1.3
本文由 [编码如写诗-天行1st] 原创编写,有任何问题可添加作者微信 [sd_zdhr] 获取协助。转载请获取作者同意。
编码如写诗
2025/05/21
2990
【信创-k8s】海光/兆芯+银河麒麟V10离线部署k8s1.31.8+kubesphere4.1.3
【k8s】基于kk二开kt安装k8s最新1.33.3版本和KeubeSphere4.1.3
昨日,在KubeSphere群看到消息,感到非常惋惜。连夜修改了下KubeKey源码来支持最新版的k8s 1.33.3和次新1.32.7。同步更新了基础组件至最新版和次新版,以便在没有更好的管理平台出现前可以续命一段时间。
编码如写诗
2025/08/03
3850
【k8s】基于kk二开kt安装k8s最新1.33.3版本和KeubeSphere4.1.3
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
本文由[编码如写诗-天行1st]原创编写,有任何问题可添加作者微信[sd_zdhr] 获取帮助。
编码如写诗
2025/06/07
3980
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)
先说新方式结论:不论什么CPU架构和操作系统,只要在线能安装的,统统都可以离线安装的。
编码如写诗
2024/08/30
1.8K0
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)
鲲鹏(arm64)+麒麟V10离线部署KubeSphere3.4.1(离线包在Windows制作 精简版)
进入E:\KubeSphere后打开终端(cmd),输入wsl后进入子系统,创建arm目录
编码如写诗
2024/09/17
1.1K1
鲲鹏(arm64)+麒麟V10离线部署KubeSphere3.4.1(离线包在Windows制作 精简版)
【信创-k8s】海光/兆芯+阿里龙蜥OS离线部署高可用k8s1.30+kubesphere4.1+监控
本文由 [编码如写诗-天行1st] 原创编写,有任何问题可添加作者微信 [sd_zdhr] 获取帮助。
编码如写诗
2025/06/26
2270
【国产化-k8s】超混合架构-x86+arm64+欧拉+麒麟V10部署k8s1.32+kubesphere4.1
本次实践在混合架构环境下部署Kubernetes和KubeSphere平台,环境涵盖4大厂商CPU和5 类操作系统。整个环境准备耗时巨大,欢迎技术同仁转发交流。
编码如写诗
2025/06/17
4300
【国产化-k8s】超混合架构-x86+arm64+欧拉+麒麟V10部署k8s1.32+kubesphere4.1
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
本文介绍如何在麒麟 V10 X86_64 架构服务器上制作制品和离线部署 KubeSphere 和 Kubernetes 集群。x86机器部署ks,镜像基本没有变化。主要区别在于各操作系统k8s初始化的依赖包和KubeKey用到的repository有区别。本文将详细记录制品制作和离线部署过程。
编码如写诗
2024/08/30
1.8K0
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
最新 KubeKey 3.1.5 离线部署KubeSphere 3.4.1+k8s(更容易了)
点击公众号关注后,回复ks3.4离线包获取 本文制品和镜像。有任何问题可点击联系我,添加微信进行咨询和反馈。
编码如写诗
2024/08/30
1.3K0
最新 KubeKey 3.1.5 离线部署KubeSphere 3.4.1+k8s(更容易了)
鲲鹏+麒麟v10安装KubeShpere
地址: https://download.docker.com/linux/static/stable/
编码如写诗
2024/08/30
1780
鲲鹏+麒麟v10安装KubeShpere
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
今天分享的主题是:如何在离线环境部署 Kubernetes v1.30.6 和 KubeSphere v4.1.2 高可用集群。
运维有术
2025/01/22
2.5K2
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
本文介绍了如何在 麒麟 V10 aarch64 架构服务器上部署 KubeSphere 和 Kubernetes 集群。我们将使用 KubeSphere 开发的 KubeKey 工具实现自动化部署,在三台服务器上实现高可用模式最小化部署 Kubernetes 集群和 KubeSphere。
运维有术
2023/11/09
1.6K1
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
推荐阅读
【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3
4500
【信创】飞腾/鲲鹏+麒麟V4国防版-离线部署K8s+KubeSphere
5220
【k8s】国产化arm架构离线环境三条命令部署k8s1.32.7+ks3.4.1
3210
【k8s】鲲鹏(arm64)+银河麒麟V10离线部署K8S+KubeSphere+Harbor
8394
【k8s】二开kk纯离线部署更稳定的k8s1.32.7+KubeSphere3.4.1
2540
【信创】与X86体验对齐!Arm64麒麟V10系统K8s多机一键离线部署
4233
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(二)
1.9K3
【k8s】arm架构离线部署k8s1.32.7+ks4.1.3
3240
【信创-k8s】海光/兆芯+银河麒麟V10离线部署k8s1.31.8+kubesphere4.1.3
2990
【k8s】基于kk二开kt安装k8s最新1.33.3版本和KeubeSphere4.1.3
3850
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
3980
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)
1.8K0
鲲鹏(arm64)+麒麟V10离线部署KubeSphere3.4.1(离线包在Windows制作 精简版)
1.1K1
【信创-k8s】海光/兆芯+阿里龙蜥OS离线部署高可用k8s1.30+kubesphere4.1+监控
2270
【国产化-k8s】超混合架构-x86+arm64+欧拉+麒麟V10部署k8s1.32+kubesphere4.1
4300
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
1.8K0
最新 KubeKey 3.1.5 离线部署KubeSphere 3.4.1+k8s(更容易了)
1.3K0
鲲鹏+麒麟v10安装KubeShpere
1780
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
2.5K2
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
1.6K1
相关推荐
【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • RoomLite
加入讨论
的问答专区 >
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档