基于Spring+JPA+Swagger的项目(3)

基于Spring+JPA+Swagger的项目(3)

基于XML解析文件,获取变量信息

  • 目前XML解析常用的技术
    1.DOM:耗资源,适合多次访问XML
    2.SAX:适合数据量较大的XML
    3.JDOM:只使用具体类而不使用接口
    4.DOM4J:优秀

  • 实际项目中使用的是w3c.DOM,主要考虑到周围都在用这个

使用W3C.DOM解析XML

  • 首先创建解析器工厂类DocumentBuilderFactory
  • 然后根据工厂类创建解析器DocumentBuilder
  • 使用解析器,直接解析File对象,获得文档模型Document
  • Document就已经是一个XML树结构了
  • 一般操作的话,直接通过getElementbyTagName()获取一个Node列表,直接强制类型转换为Element
  • 对于Element,可以getAttributes()获取其属性列表,也是按照Node的格式,需要.item()去定位,时候使用getNodeName和getNodeValue获取键值对

Document其他属性

节点列表类NodeList
NodeList代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组

节点类Node
Node对象是DOM中最基本的对象,代表了文档树中的抽象节点。但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等

元素类Element
是Node类最主要的子对象,在元素中可以包含属性,因而Element中有存取其属性的方法

7.属性类Attr

代表某个元素的属性,虽然Attr继承自Node接口,但因为Attr是包含在Element中的,但并不能将其看做是Element的子对象,因为Attr并不是DOM树的一部分

业务逻辑设计

  • 考虑到是树形结构,并且有嵌套的成员,因此采用递归的方式,从子节点中搜索同一变量,解析其属性存入实体类,最后调用DAO层完成数据的插入
  • 目前的设计还有缺陷,只是在Controller调用ParseAndInsert()函数,这个Service层的函数,完成了全部数据的解析和插入,到时候关于异常的抛出肯定要重新优化

解决的bug

  • 在JPA中的自动配置中,会根据你实体类中的变量名,猜测你的数据库中的column,但是当它猜错了,就出问题了.

  • 如果你采用了自动建表,也就是JPA设置为auto,它会把它新建的表插入到你的数据库中,在插入数据时就会忽视你的表,如果恰好它修改的变量是主键,那就根本跑不起来

  • 在关掉自动建表后,JPA设置为none,它会提醒你Field出现问题,在CSDN上搜索都是你的主键没有自增什么的,但是跟你的问题完全没有关系.

  • 解决办法
    在yml文件下这样设置:

 jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

这样就不会把UserVariable自动设置为User_Variable,问题解决.

Postman的使用

  • 通过Postman测试后端非常的方便
  • 可以传Json,时间戳,以及file格式文件
  • 时间戳,需要设计相关的前端函数
  • Json和file直接选传送类型即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值