jpa query 取数组第一个_数据结构基础-数组

本文探讨了数组作为定长线性表的概念及其特点,并详细介绍了广义表的定义、结构及基本运算,同时对比了二者的主要区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

数组是定长线性表在维数上的扩展,即线性表中的元素又是一个线性表。

n维数组是一种”同构“的数据结构,也就是指其每个数据元素类型相同、结构相同。

数组其实就是同一类型的多个变量的集合。

数组元素的特点:

  • 数据元素数目固定,一旦定义了一个数组结构,就不再有元素个数的增减变化。
  • 数据元素具有相同的类型。
  • 数据元素的下标关系具有上下界的约束且下标有序。

数组的基本运算:

  • 给定一组下标,存取相应的数据元素。
  • 给定一组下标,修改相应的数据元素中某个数据项的值。

如在JAVA中,数组的操作如下图所示:

ffc1cda41c08e5d65f9bb56d3f4dde7a.png

JAVA数组操作

数组的顺序存储:

数组一般不做插入和删除运算,一旦定义了数组,则结构中的数据元素个数和元素之间的关系就不再发生变动,因此数据适合于采用顺序存储结构

广义表

广义表是由0个或多个单元素或子表组成的有限序列,是线性表的推广。

广义表与线性表的区别:

线性表的元素都是结构上不可分的单元素,而广义表可以是单元素,也可以是有结构的表。

广义表一般记为:LS = (a1,a2,...,an),n>=1。其中a1...an等元素既可以是单个元素,也可以是广义表。分别称为原子和子表。

广义表通常用圆括号括起来,用逗号分隔其中的元素,书写时用大写字母表示广义表,用小写字母表示原子。

广义表的长度与深度:

长度:指广义表中元素的个数。

深度:指广义表展开后,所含的括号的最大层数。

如:

N=(), N是一个空表,其长度为0。

L=(a,b),L是长度为2的广义表,它的两个元素都是原子,深度为1

M=(x,L)=(x,(a,b)),M是长度为2的广义表,第一个元素是原子x,第二个元素是子表L,深度为2。

  • 基本操作

广义表的操作与线性表类似,但由于广义表的结构比较复杂,运算的实现也不如线性表简单,下面列出两个比较特殊的运算:

取表头:非空广义表的第一个元素称为表头,它可以是一个单元素,也可以是一个子表。

取表尾:非空广义表除表头元素之外,由其余元素构成的表称为表尾。非空广义表的表尾必定是一个表。

  • 存储结构:

广义表中的元素本身又可以具有结构,它是一种带有层次的非线性结构,因此难以用顺序存储结构表示,通常采用链式存储结构

非空广义表可以分解为表头和表尾两部分,反之,一对确定的表头和表尾可唯一确定一个广义表

广义表的元素有两种类型,因此链表结点结构也有两种,如下图所示,

696ab9eb49b4864d9ee4dae38222264b.png

广义表链表结点结构

tag 标记位:区分是原子还是子表,通常原子的 tag 值为 0,子表的 tag 值为 1。

hp 指针:用于连接本子表中存储的原子或子表。

tp 指针:用于连接广义表中下一个原子或子表。

对于广义表C=(a,(b,c,d)),链式存储结构如下图所示:

4c686e5ca6578dc53c2208ba9881c4d6.png

广义表(a,(b,c,d))存储结构示意图

#spring: # jpa: # hibernate: # ddl-auto: none # ★★记得上线时改回来 # show-sql: false # database-platform: org.hibernate.dialect.Oracle10gDialect # open-in-view: false # datasource: # url: jdbc:oracle:thin:@192.168.88.26:1521:orcl # driver-class-name: oracle.jdbc.OracleDriver # username: dba_mgr # password: totodir #hikari数据库连接池 # hikari: # pool-name: Retail_HikariCP # minimum-idle: 5 #最小空闲连接数量 # idle-timeout: 300000 #空闲连接存活最大时间,默认600000(10分钟) # maximum-pool-size: 10 #连接池最大连接数,默认是10 # auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true # max-lifetime: 600000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟 # connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000 # connection-test-query: select 1 from dual #server: # servlet: # session: # timeout: 300m # port: 7086 # undertow: # url-charset: UTF-8 #logging: # file: # path: /hyerpinterfacelog # name: hyerpinterface.log server: port: 7086 servlet: session: timeout: 1800s spring: #jpa: # show-sql: true # properties: # hibernate: # format_sql: true datasource: dynamic: primary: oracle strict: false datasource: syoracle: url: jdbc:oracle:thin:@192.168.88.26:1521:orcl username: dba_mgr password: totodir driver-class-name: oracle.jdbc.OracleDriver druid: initial-size: 10 min-idle: 10 max-active: 500 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 lyoracle: url: jdbc:oracle:thin:@192.168.88.30:1521:orcl username: dba_mgr password: totodir driver-class-name: oracle.jdbc.OracleDriver druid: initial-size: 10 min-idle: 10 max-active: 500 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 mybatis-plus: global-config: db-config: # 主键ID类型 # id-type: none logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0 configuration: # 驼峰下划线转换 map-underscore-to-camel-case: true # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl import com.alibaba.druid.pool.DruidDataSource; import com.hyerp.hyerpinterface.config.DynamicDataSource; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; @Configuration public class DataSourceConfig { // 沈阳数据源 (0101) @Bean("syOracleDataSource") @ConfigurationProperties(prefix = "spring.datasource.syoracle") public DataSource syOracleDataSource() { return new DruidDataSource(); // 使用Druid连接池 } // 洛阳数据源 (0102) @Bean("lyOracleDataSource") @ConfigurationProperties(prefix = "spring.datasource.lyoracle") public DataSource lyOracleDataSource() { return new DruidDataSource(); // 使用Druid连接池 } // 主数据源(动态路由) @Primary @Bean("dynamicDataSource") public DataSource dynamicDataSource() { Map<Object, Object> targetDataSources = new HashMap<>(2); // 使用部门编码作为数据源标识 targetDataSources.put("-5716907732163998808", syOracleDataSource()); // 沈阳连接 targetDataSources.put("4294613579574035536", syOracleDataSource()); // 沈阳传感 targetDataSources.put("0103", lyOracleDataSource()); // 洛阳 // 默认使用沈阳数据源 return new DynamicDataSource(syOracleDataSource(), targetDataSources); } }package com.hyerp.hyerpinterface.dao; import com.baomidou.dynamic.datasource.annotation.DS; import com.hyerp.hyerpinterface.domain.entity.OaItemAbove; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import javax.transaction.Transactional; import java.util.List; import java.util.Optional; /** * @Author GGZ * @Date 2023/3/20 14:06 * @Version 1.5 */ public interface OaitemRepo extends JpaRepository<OaItemAbove, String> { List<OaItemAbove> findByIdnum(String Idnum); List<OaItemAbove> findByShowvalueAndRef(String showvalue, String refid); List<OaItemAbove> findByShowvalue(String showvalue); @Transactional @DS("syoracle") @Query(value = "SELECT SHOWVALUE FROM OACTP_ENUM_ITEM WHERE IDNUM = ?", nativeQuery = true) Optional<OaItemAbove> selectidnumop(@Param("idnum") String idnum); @Transactional @DS("syoracle") @Query(value = "SELECT SHOWVALUE FROM OACTP_ENUM_ITEM WHERE IDNUM = 8347348803478963605", nativeQuery = true) } } 该sql语句在数据库能查到SELECT SHOWVALUE FROM OACTP_ENUM_ITEM WHERE IDNUM = 8347348803478963605在程序中查询是空怎么解决
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值