当前位置: 首页 > article >正文

项目技巧二

目录

java中Date和mysql数据库datetime数据类型 

注意:

在yml文件中配置成员变量的值

1.写一个yml文件 

 2.写一个与yml相互映射的类来读取yml的属性信息

3.在其他子模块的配置类中开启此类,读取yml文件的内容信息

4.直接依赖注入(因为已经交给spring管理),再使用 List mcodes = stockInfoConfig.getInner();

直接推送git

实体对象说明

1.pojo

2.domain

3.entity

4.vo-->value object对象

5.vo-->view object对象


java中Date和mysql数据库datetime数据类型 

  1. 数据库中的 datetime 类型

    • 大多数关系型数据库(如 MySQL, SQL Server, PostgreSQL 等)都提供了 datetime 类型,用于存储日期和时间信息。
    • 这些数据库中的 datetime 类型通常遵循 ISO 8601 标准,能够存储从 '0001-01-01 00:00:00' 到 '9999-12-31 23:59:59' 的日期和时间。
    • 具体的精度和存储方式可能因数据库系统的不同而有所差异。
  2. Java 中的 Date 类型

    • Java 的 java.util.Date 类代表一个特定的瞬间,精确到毫秒。
    • Date 对象包含从“标准基准时间”(即格林威治时间 1970 年 1 月 1 日 00:00:00)至今的毫秒数。
    • Date 类本身不包含时区信息,它只是表示一个时间点。

注意:

1.我们可以直接使用Date数据类型来与datetime数据类型直接比较,如

where datetime = Date 

2.从数据库中查询datetime数据类型时,会直接得到一个Date数据类型

3.将Date数据类型插入数据库时,需要把Date数据类型转换成特定格式的时间String数据类型才能插入数据库中

如:特定string数据类型格式为 "yyyy-MM-dd HH:mm:ss" 

在yml文件中配置成员变量的值

1.写一个yml文件 

# 配置股票相关的参数
stock:
  inner:   #A股
    - sh000001 # 上证ID
    - sz399001 #  深证ID
  outer: # 外盘
    - int_dji # 道琼斯
    - int_nasdaq # 纳斯达克
    - int_hangseng # 恒生
    - int_nikkei # 日经指数
    - b_FSSTI # 新加坡

 2.写一个与yml相互映射的类来读取yml的属性信息

注意:属性名字必须与yml文件中的属性一致

在这个类中我们没有把它交给Spring管理,即还没有进行加载,没有映射

@Data
@ConfigurationProperties(prefix = "stock")//映射yml文件中stock属性的值
//@Component//直接让其交给spring管理,TODO:我们不使用(不让它自己开启),我们让其他要使用该类的子模块来开启
public class StockInfoConfig {
    public List<String>inner;//国内大盘编码
   public List<String>outer;//国外大盘编码
}

3.在其他子模块的配置类中开启此类,读取yml文件的内容信息

使用@EnableConfigurationProperties,让这个子模块开启加载此配置类,并让它映射yml文件中的stock属性的值,再交给spring管理

@Configuration
@EnableConfigurationProperties(StockInfoConfig.class)//TODO:在这个子模块开启加载此配置类,并让它映射yml文件中的stock属性的值,再交给spring管理
public class CommonConfig {
}

4.直接依赖注入(因为已经交给spring管理),再使用 List<String> mcodes = stockInfoConfig.getInner();

@Service
@Slf4j
public class StockServiceImpl implements StockService {
    @Autowired
    private StockInfoConfig stockInfoConfig;
    @Autowired
    private StockMarketIndexInfoMapper stockMarketIndexInfoMapper;

    @Override
    public R<List<InnerMarketDomain>> getInnerMarket() {
        //1.获取当前时间的最新交易点(精确到分钟,秒和毫秒置为0)
        //Date curDate = DateTimeUtil.getLastDate4Stock(DateTime.now()).toDate();
        Date curDate = MyDateTimeUtil.getLateDate4Stock(DateTime.now()).toDate();

        //mock data 等后续股票采集job工程完成,再将此代码删除
        //curDate=DateTime.parse("2021-12-28 09:31:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();
        //log.info("curDate:{}",curDate);
        //2.获取国内大盘的编码集合
        List<String> mcodes = stockInfoConfig.getInner();
        //3.调用mapper进行查询
        List<InnerMarketDomain> data=stockMarketIndexInfoMapper.getInnerMarket(curDate,mcodes);
        //4.返回数据
        return R.ok(data);
    }
}
List<InnerMarketDomain> getInnerMarket(@Param("curDate") Date curDate, @Param("marketCodes") List<String> marketCodes);
 <select id="getBlock4Ten" resultType="com.hhh.stock.pojo.domain.BlockDomain">
        select company_num as companyNum,
               trade_amount as tradeAmt,
               label as code,
               avg_price as avgPrice,
               block_name as name,
               cur_time as curDate,
               trade_volume as tradeVol,
               updown_rate as updownRate
        from stock_block_rt_info
        where cur_time=#{curDate}
        order by trade_volume desc limit 10;
    </select>

cur_time是datetime类型,curDate是Date类型,datetime类型可以直接和Date类型进行比较,datetime查询出来的数据类型也是Date,但是Date数据类型要存入数据库时,必须设置成指定时间格式的string类型进行存入数据库

@Data
@ApiModel(description = "大盘数据")
public class InnerMarketDomain {
    @ApiModelProperty("大盘编码")
    private String code;//大盘编码
    @ApiModelProperty("指数名称")
    private String name;//指数名称
    @ApiModelProperty("开盘点")
    private BigDecimal openPoint;//开盘点
    @ApiModelProperty("当前点")
    private BigDecimal curPoint;//当前点
    @ApiModelProperty("前收盘点")
    private BigDecimal preClosePoint;//前收盘点
    @ApiModelProperty("交易量")
    private Long tradeAmt;//交易量
    @ApiModelProperty("交易金额")
    private Long tradeVol;//交易金额
    @ApiModelProperty("涨跌值")
    private BigDecimal upDown;//涨跌值
    @ApiModelProperty("涨幅")
    private BigDecimal rose;//涨幅
    @ApiModelProperty("振幅")
    private BigDecimal amplitude;//振幅
    @ApiModelProperty("当前时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")//设置返回前端的时间格式
    private Date curTime;//当前时间
}

结果:

直接推送git

 git push origin master --force

实体对象说明

1.pojo

java普通对象,范围比较大,本质上就是一个数据容器,且无需提供复杂的方法(只需有get set方法)

2.domain

领域对象,就是将某个业务方向的数据加以封装成的对象,比如:以数据库为例子,该类的数据可能来自多张表的字段,或者单张表的某系字段

3.entity

与数据库表字段一一对应的实体对象

4.vo-->value object对象

就是保存值的对象,内置的属性是与yml文件相互映射保存数据的(使用@ConfigurationProperties),等到要使用的时候直接使用@EnableConfigurationProperties注解来开始让使用了@ConfigurationProperties注解的类映射yml文件属性内容,然后交给spring管理。

5.vo-->view object对象

就是与前端交互的数据对象

注意:domian包下的类是直接与数据库交互直接进行赋值,而view object是与前端进行交互的,通过domain或者entity进行赋值


http://www.kler.cn/a/284330.html

相关文章:

  • UE5 UE4 播放视频没有声音解决
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备:大华IPC摄像头局域网访问异常解决办法
  • React中 修改 html字符串 中某些元素的属性
  • 陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解
  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • 【专题】计算机网络之网络层
  • R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
  • “添加”业务功能开发
  • Qt 杨帆起航
  • 【分布式定时任务】XXL-JOB_2.4.1部署与实战
  • 解决Element-ui中Table表格里的show-overflow-tooltip不兼容safari浏览器问题
  • vue-admin-template pan版使用方法
  • 【秋招笔试】8.24阿里控股秋招(研发岗)-三语言题解
  • 使用极狐GitLab进行K3S集群的维护与控制
  • 进程间通信--IPC机制
  • 【技术解析】Spring Boot异步机制:实现高吞吐量的最佳实践
  • 【零知识证明】构建第一个zk
  • 95.WEB渗透测试-信息收集-Google语法(9)
  • RN开发问题
  • 线性表之数组
  • 数据结构-单链表-详解-2
  • 彩漩科技亮相第一届人工智能教育应用论坛,荣获AI教育科技产品TOP30奖项
  • 数字化转型升级探索(一)
  • 【奇某信-注册_登录安全分析报告】
  • 鸿蒙高级开发者认证题库(2)
  • RKNPU2从入门到实践 --- 【4】RKNN 模型构建【使用pycharm一步一步搭建RKNN模型】