下面推荐10个主流比较流行的ORM框架,都是开源的项目: 一、SqlSugar(国内) 支持SqlServer、MySql、PgSql和Oracle插入blukcopy 分表大数据自处理 支持多租户、多库事务...支持一对多和多对多的导航属性 支持MySql、SqlServer、Sqlite、Oracle、postgresql、QuestDb、ClickHouse、达梦、人大金仓、神通数据库、瀚高、MsAccess...开源地址:https://github.com/nhibernate/nhibernate-core 七、ServiceStack/ServiceStack.OrmLite(国外) 简单的 .NET 的快速...插入/删除/更新/保存和 IsNew 的辅助方法 分页请求会自动计算出总记录数并获取特定页面。 简单的交易支持。 更好的参数替换支持,包括从对象属性中获取命名参数。...(V5) 用于记录异常、安装值转换器和将列映射到没有属性的属性的挂钩。
它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法...EntityFramework.VersionedProperties - 将对象里每次变更历史自动保存到一个特定的属性里。审计或者做历史版本时比较适用。...Dapper Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。...POCO 添加基本的 CRUD 操作(获取、插入、更新、删除)来补充Dapper。...内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。
比如,在上面的代码中,如果后续版本的接口需要接受两个参数来执行DoSomething方法,或者说除了返回一个string外还需要返回其他信息。如果在原接口上修改的话,就会使得老版本的客户端无法使用。...而在ServiceStack中,这些标记都不需要,ServiceStack会序列化所有的Plain Old CLR Objects(POCOs),并且这些对象对客户端都可见。...这强化和简化了RESTFull风格的WebService的实现。只需要在这些方法上添加爱[Route(…)]属性即可。...对象可以换成ServiceStack支持的其他数据序列化格式。...它能够比较方便快捷的搭建高效的具有RESTFull风格的WebService应用程序。
目前最流行的就是ServiceStack.Redis这个开源项目,其在GitHub上的下载地址为:https://github.com/ServiceStack/ServiceStack.Redis ?...一个Key对应一个Value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片(生成二进制)或者序列化的对象。 ...key/value结构来存储,主要有以下2种存储方式: 第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时...第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据...), 也就是通过key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题,也就很好的解决了问题。
但是,对于很多刚入门的程序员,或者已经入坑几年的所谓的有经验的程序员仍然在开发过程中,因为不知道、或者了解较少的调试技巧,调试方法,导致无法在项目开发过程中快速有效的开发, 或者无法在使用第三方框架的情况下...具体过程如下: 1)项目名称鼠标点击右键,选择“属性”,得到“属性”窗口,选择左侧 Web 选项,配置服务器 ?...就这个 ServiceStack.Redis 而言,跟随右侧的 github 地址:https://github.com/ServiceStack/ServiceStack.Redis,就能够找到如下的内容...点击安装,提示安装的 dll,并且在控制台的输出中也会输出对应的信息。如下图: ? 插入 redis 键值对 ?...那么如果我们想利用源码查看 ServiceStack.Redis 是插入数据的实现过程的情况下,应该如何操作呢? 查看源码执行过程 1)查看方法的定义位置 ? 2)找到对应的命名空间 ?
,主要用于异构数据库迁移场景中非表对象的 DDL 导出和转换,如:Oracle 中的序列、函数、存储过程、包、触发器、视图等对象。...建表时注意: 应将表名和字段名都改为大写,因为 Oracle 中严格区分数据库对象的大小写。...创建序列时根据源端表上自增列最大值来指定 START WITH 属性。 注意: 使用 GENERATED BY DEFAULT AS IDENTITY 属性生成的序列无法直接删除,会报错。...4总结 本文验证并阐述了在 OB Oracle 中实现自增主键的两种方法:创建自定义序列和利用 GENERATED BY DEFAULT AS IDENTITY 属性生成序列。...方案二 利用 GENERATED BY DEFAULT AS IDENTITY 属性生成序列时,存在一些限制: 因序列由系统自动创建并管理,需要查询系统视图才能获取序列名,无法与业务表名对应。
主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A、B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键。...keyProperty:将查询到的主键值设置到parameterType指定对象的哪个属性。 ...主键为UUID时(主键必须为字符类型) 使用mysql的方法UUID()方法获取随机的UUID作为主键,select UUID()可以在插入数据前,生成随机的UUID并通过keyProperty赋值给将要插入记录的主键...sex,address) values (#{id},#{userName},#{birthday},#{sex},#{address}) 在上述代码中可以看到order 的属性值为...背 景数据库为oracle: 主键为自增时(主键为数值类型): 在oracle中实现主键自增,需要先创建序列,相当于创建一个全局变量,用来存储对应表的主键的当前最大值(主键为数值类型时)。
使用DROP USER命令可以删除用户,当用户拥有模式对象时则无法删除用户,而必须使用CASCADE选项以删除用户及用户模式对象。...3)如果创建的视图包含连接运算符,DISTINCT运算符、集合运算符、聚合函数和groupby子句,则将无法更新视图。 4)如果创建的视图包含伪列表达式,则将无法更新视图。...CURRVAL:返回序列的当前值,即最后一次引用NEXTVAL时返回的值 举例: 创建序列 创建表 插入数据 查看数据 查看序列的当前值 Currval返回序列的当前值,即最后一次引用NEXTVAL...,只在oracle的数据字典中保存其定义描述,在使用同义词时,oracle会将其翻译为对应对象的名称。...(5)按范围分区是,如果某些记录暂时无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在的分区中 (6)再次插入以下数据 (7)查询 (8)查看所有分区的命令
使用DROP USER命令可以删除用户,当用户拥有模式对象时则无法删除用户,而必须使用CASCADE选项以删除用户及用户模式对象。...对象权限 对象权限是指针对某个特定模式对象执行操作的权利,只能针对模式对象来设置管理对象权限,包括:表、视图、序列、存储过程等。 ?...物化视图 含义:就是具有物理存储的特殊视图,占据物理空间,就像表一样 是远程数据的本地副本,或者用来生成基于数据表求和的汇总表 ?...十、同义词 ---- 同义词是对象的一个别名,不占用任何的实际存储空间,只在oracle的数据字典中保存其定义描述,在使用同义词时,oracle会将其翻译为对应对象的名称。 1....(5)按范围分区是,如果某些记录暂时无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在的分区中 ? (6)再次插入以下数据 ? (7)查询 ?
….在SQL中,我们查询出来的数据可看成是一张表,那么我们在插入数据的时候,可以根据查询出来的数据进行插入…这就可以看成是批量操作… 值得注意的是,如果没有指定插入哪些字段的话,那么查询出来的全部字段均会插入表中...Oracle使用的是序列这么一个对象…. (1)类似于MySQL中的auto_increment自动增长机制,但Oracle中无auto_increment机制 (2)是oracle提供的一个产生唯一数值型值的机制...emp_empno_seq序列的的increment by属性为5 alter sequence emp_empno_seq increment by 5; 修改emp_empno_seq序列的start...你无法做insert操作,表真正亡,序列亡 删除序列,会影响表吗?...为表创建外健 8)alter修改表或者序列的属性 》用sys登录,查询c##tiger所拥有的对象权限 sqlplus / as sysdba; col grantee for a10;
属性 描述 keyProperty selectKey 语句结果应该被设置的目标属性。 resultType 结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。...如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。...像Oracle这样取序列的情况,需要设置为before,否则会报错。...user之前执行(order="BEFORE"),该句话执行完之后,会生成一个ID,传进来的参数User对象里的id字段就会被赋值成sequence的值。...插入之后获得ID赋值到传进来的对象中(对象中必须有相应的属性)。 像如下本身是Mysql或SqlServer的数据库,没有必要这样使用,有点浪费。 <!
增删改查标签: 查--:id属性:唯一标识符;resultType:返回类型; 增--: id属性:唯一标识符;parameterType属性:可以省略,要插入的类型...javaBean的哪个属性 Oracle不支持自增,而是用序列模拟自增 每次插入的数据的主键是从序列中拿到的值,如何获取这个值: oracle...,可以编写一个TO(Transfer Object)数据传输对象。...Page{ int index; int size; } 参数值的获取: #{}:可以获取map中的值或者pojo对象中的值; ${}:可以获取map中的值或者pojo对象中的值...Oracle不支持 由于全局配置在:jdbcTypeForNull=OTHER,oracle不支持。
,如果我们想要知道刚刚插入的数据的主键是多少,我们可以通过以下的方式来获取 需求: user对象插入到数据库后,新记录的主键要通过user对象返回,通过user获取主键值。...: 实现思路: 先查询序列得到主键,将主键设置到user对象中,将user对象插入数据库。...-- oracle 在执行insert之前执行select 序列.nextval() from dual取出序列最大值,将值设置到user对象 的id属性 --> 无法创建pojo对象的。...在Oracle的话,是使用序列来返回自动增长的主键的。 占位符有两种,一种是解析传递进来的参数数据、一种是原样输出传递进来的数据。
往数据库插入数据后,返回数据主键信息。有两种方法。 一种:使用insert标签中的useGeneratedKeys属性和keyProperty属性组合使用获取主键信息。...="id" 表示把返回的id主键值注入到返回对象的id属性中 --> 插入之后执行。 BEFORE 在插入之前执行。 keyProperty 属性设置对象的哪个属性接收 resultType 属性设置返回值类型。 插入之前执行。 keyProperty属性设置对象的哪个属性接收 resultType属性设置返回值类型。...的序列自增主键 select 序列名.nextval as id from
相应文件具有一个 Oracle 管理文件文件名。...ORA-08004:序列XX无法实例化 错误说明:下一个序列值超过序列配置的最大值 ORA-08102: 未找到索引关键字, 对象号 2852155, 文件 9, 块 1544794 (2) 错误说明:...ORA-13296: 坐标系统的说明不正确 ORA-13300: 单点转换错误 ORA-13303: 无法从表中检索几何对象 ORA-13304: 无法在表中插入转换的几何对象 ORA-13330:...: 元数据中的一个或多个配置属性具有无效的值 ORA-16805: LogXptMode 属性的更改违反了全局保护模式 ORA-16806: 未启用补充事件记录功能 ORA-16807: 无法更改数据库保护模式...) 插入以兼容级运行的数据库 ORA-19727: 无法将数据 [] (在级) 插入正在运行的 Oracle 数据库 ORA-19728: 数据对象号在表和分区间 (在表中) 冲突 ORA-19729:
1.引用Nuget包 ServiceStack.Redis 我这里就用别人已经封装好的Reids操作类来和大家一起参考了下,看看怎么使用ServiceStack.Redis 操作Redis数据 RedisConfigInfo...private static PooledRedisClientManager prcManager; /// /// 静态构造方法,初始化链接池管理对象...} } RedisStringService--String类型操作帮助类 /// /// key-value 键值对:value可以是序列化的数据...在这里,上面的封装我就放一边,还是给大家演示ServiceStack原生的API如何使用 2. string 类型的使用 public static RedisClient...插入实体和读取实体 UserInfo userInfo = new UserInfo() { Id = 3, Age = 50, Name = "zxl", Pwd =
4.8 二级缓存调优 HRD第20.2节 “二级缓存”中的描述对大多数开发者来说过于简单,无法做出选择。...对于实体的删除或插入动作,或者集合变更,调用序列都是相似的。...总是将批量插入嵌套在事务中。 每次事务修改的对象数量越少就意味着会有更多数据库提交,正如4.5节所述每次提交都会带来磁盘相关的开销。...如果对象的属性较多,例如是一张大的遗留表,那你应该开启该特性,和“dynamic-update”结合使用以避免太多数据库更新开销。...此外,还要注意,该特性会绕过Hibernate对版本数据(versioned data)的常用乐观锁策略。 4.10.5 增强的序列标识符生成器 范例11中使用Oracle的序列作为标识符生成器。
default tablespace后边是表空间名称 oracle数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。...八、Oracle中的事务 这是因为 oracle的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据库...提交:commit 回滚::rollback Oracle中事务的保存点: ? 事务的隔离级别和属性: ? ...,’Kevin',1,nu11,’Beijing'); 序列可能产生裂缝的原因: 回滚 系统异常 多个表共用一个序列 9.3 索引 索引是用于加速数据存取的数据对象。...PL/SQL (Procedure Language /SQL)是 Oracle对sql语言的过程化扩展,指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。
ID 列的 DEFAULT 属性为 sequence_name.nextval。...因此,执行述语句后,当 tablename 表中插入一行数据时,会自动为 ID 列赋值为 sequence_name 序列的下一个值。 3、验证该方法是否达到自增列的效果。...:new.id 表示新插入行的 ID 列,dual 是一个虚拟的表,用于生成一行数据用以存储序列的下一个值。 4、验证该方法是否达到自增列的效果。...测试发现,关于序列对象的名称在OB中不论是通过 GENERATED BY DEFAULT AS IDENTITY 自动创建,还是手动创建,都会占用 ISEQ$$_5000x_16 中 x 的位置,若删除序列或删除表...方法二(SEQUENCE + DDL):相较于第一种该方法只需要指定 DDL 改写 DEFAULT 属性省去了 DML 的操作,但仍需再指定自己创建的序列名 sequence_name,每个表的序列名都不一致
领取专属 10元无门槛券
手把手带您无忧上云