当前位置:   article > 正文

通过oracle序列(sequence)获取自增值设置给字符串(String)类型的id引发的问题_字符串类型id导数据报错

字符串类型id导数据报错

我的一个表插入的时候是通过实时获取定义的序列(sequence)来拿到自增值的

sequence定义的内容如下

  1. -- Create sequence
  2. create sequence SEQ_IDS_FILE_LIST
  3. minvalue 1
  4. maxvalue 999999999999
  5. start with 49
  6. increment by 1
  7. cache 20;

 

mybatis的xml定义的插入语句如下

  1. <insert id="insertIdsFileList" parameterType="IdsFileList">
  2. <selectKey keyProperty="id" resultType="long" order="BEFORE">
  3. SELECT seq_ids_file_list.NEXTVAL as id FROM DUAL
  4. </selectKey>
  5. insert into ids_file_list
  6. <trim prefix="(" suffix=")" suffixOverrides=",">
  7. <if test="id != null">id,</if>
  8. <if test="projectId != null">project_id,</if>
  9. <if test="subSystem != null">sub_system,</if>
  10. <if test="devCode != null">dev_code,</if>
  11. <if test="name != null and name != ''">name,</if>
  12. <if test="code != null">code,</if>
  13. <if test="respUnit != null">resp_unit,</if>
  14. <if test="fileFormat != null">file_format,</if>
  15. <if test="cabin != null">cabin,</if>
  16. <if test="importTime != null">import_time,</if>
  17. <if test="changeTimes != null">change_times,</if>
  18. <if test="inPlace != null">in_place,</if>
  19. </trim>
  20. <trim prefix="values (" suffix=")" suffixOverrides=",">
  21. <if test="id != null">#{id},</if>
  22. <if test="projectId != null">#{projectId},</if>
  23. <if test="subSystem != null">#{subSystem},</if>
  24. <if test="devCode != null">#{devCode},</if>
  25. <if test="name != null and name != ''">#{name},</if>
  26. <if test="code != null">#{code},</if>
  27. <if test="respUnit != null">#{respUnit},</if>
  28. <if test="fileFormat != null">#{fileFormat},</if>
  29. <if test="cabin != null">#{cabin},</if>
  30. <if test="importTime != null">#{importTime},</if>
  31. <if test="changeTimes != null">#{changeTimes},</if>
  32. <if test="inPlace != null">#{inPlace},</if>
  33. </trim>
  34. </insert>

表结构如下

  1. -- Create table
  2. create table IDS_FILE_LIST
  3. (
  4. ID VARCHAR2(20) not null,
  5. PROJECT_ID VARCHAR2(20),
  6. SUB_SYSTEM VARCHAR2(20),
  7. DEV_CODE VARCHAR2(64),
  8. NAME VARCHAR2(256) not null,
  9. CODE VARCHAR2(64),
  10. RESP_UNIT VARCHAR2(20),
  11. FILE_FORMAT VARCHAR2(20),
  12. CABIN VARCHAR2(20),
  13. IMPORT_TIME DATE,
  14. CHANGE_TIMES NUMBER(3),
  15. IN_PLACE NUMBER(1)
  16. )
  17. tablespace IDS
  18. pctfree 10
  19. pctused 40
  20. initrans 1
  21. maxtrans 255
  22. storage
  23. (
  24. initial 64
  25. next 1
  26. minextents 1
  27. maxextents unlimited
  28. );
  29. -- Add comments to the table
  30. comment on table IDS_FILE_LIST
  31. is 'IDS数据来源管理表';
  32. -- Add comments to the columns
  33. comment on column IDS_FILE_LIST.ID
  34. is '唯一标识';
  35. comment on column IDS_FILE_LIST.PROJECT_ID
  36. is '项目ID';
  37. comment on column IDS_FILE_LIST.SUB_SYSTEM
  38. is '分系统';
  39. comment on column IDS_FILE_LIST.DEV_CODE
  40. is '设备代号';
  41. comment on column IDS_FILE_LIST.NAME
  42. is '文件名称';
  43. comment on column IDS_FILE_LIST.CODE
  44. is '文件编号';
  45. comment on column IDS_FILE_LIST.RESP_UNIT
  46. is '责任单位';
  47. comment on column IDS_FILE_LIST.FILE_FORMAT
  48. is '文件形式';
  49. comment on column IDS_FILE_LIST.CABIN
  50. is '所属舱段';
  51. comment on column IDS_FILE_LIST.IMPORT_TIME
  52. is '导入时间';
  53. comment on column IDS_FILE_LIST.CHANGE_TIMES
  54. is '更改单次号';
  55. comment on column IDS_FILE_LIST.IN_PLACE
  56. is '正式文件是否到位';
  57. -- Create/Recreate primary, unique and foreign key constraints
  58. alter table IDS_FILE_LIST
  59. add constraint PK_IDS_FILE_LIST primary key (ID)
  60. using index
  61. tablespace IDS
  62. pctfree 10
  63. initrans 2
  64. maxtrans 255
  65. storage
  66. (
  67. initial 64K
  68. next 1M
  69. minextents 1
  70. maxextents unlimited
  71. );
  72. alter table IDS_FILE_LIST
  73. add constraint FK_IDS_FILE_LIST_REF_PROJ foreign key (PROJECT_ID)
  74. references IDS_PROJECT (ID);

 

 

注意:ID定义的是“VARCHAR2(20)”,类型是字符串

发现sequence获取的值是数字类型,所以需要做转换,否则报如下错误

 

  1. 23:34:58.388 [http-nio-80-exec-6] ERROR c.r.f.w.e.GlobalExceptionHandler - [notFount,64] - 运行时异常:
  2. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.ruoyi.ids.domain.IdsFileList' with value '33' Cause: java.lang.IllegalArgumentException: argument type mismatch
  3. at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
  4. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
  5. at com.sun.proxy.$Proxy89.insert(Unknown Source)
  6. at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)
  7. at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
  8. at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
  9. at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
  10. at com.sun.proxy.$Proxy134.insertIdsFileList(Unknown Source)
  11. at com.ruoyi.ids.service.impl.IdsFileListServiceImpl.insertIdsFileList(IdsFileListServiceImpl.java:57)
  12. at com.ruoyi.ids.controller.IdsFileListController.addSave(IdsFileListController.java:86)
  13. at com.ruoyi.ids.controller.IdsFileListController$$FastClassBySpringCGLIB$$49dd271.invoke(<generated>)
  14. at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  15. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
  16. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
  17. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  18. at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:62)
  19. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
  20. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  21. at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55)
  22. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
  23. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  24. at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor$1.proceed(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:82)
  25. at org.apache.shiro.authz.aop.AuthorizingMethodInterceptor.invoke(AuthorizingMethodInterceptor.java:39)
  26. at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor.invoke(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:115)
  27. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  28. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  29. at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
  30. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  31. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  32. at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
  33. at com.ruoyi.ids.controller.IdsFileListController$$EnhancerBySpringCGLIB$$379e3d42.addSave(<generated>)
  34. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  35. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  36. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  37. at java.lang.reflect.Method.invoke(Method.java:498)
  38. at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
  39. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
  40. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
  41. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
  42. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
  43. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
  44. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
  45. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
  46. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
  47. at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
  48. at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
  49. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
  50. at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
  51. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
  52. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  53. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  54. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  55. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  56. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
  57. at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
  58. at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  59. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  60. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
  61. at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
  62. at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  63. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  64. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
  65. at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
  66. at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  67. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  68. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
  69. at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
  70. at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  71. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  72. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
  73. at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
  74. at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  75. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  76. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
  77. at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450)
  78. at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
  79. at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
  80. at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
  81. at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
  82. at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
  83. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  84. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  85. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  86. at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
  87. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  88. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  89. at com.ruoyi.common.xss.XssFilter.doFilter(XssFilter.java:62)
  90. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  91. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  92. at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
  93. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  94. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  95. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  96. at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
  97. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  98. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  99. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  100. at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
  101. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  102. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  103. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  104. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
  105. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
  106. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
  107. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
  108. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  109. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
  110. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
  111. at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
  112. at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  113. at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
  114. at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
  115. at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  116. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  117. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  118. at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  119. at java.lang.Thread.run(Thread.java:745)
  120. Caused by: org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.ruoyi.ids.domain.IdsFileList' with value '33' Cause: java.lang.IllegalArgumentException: argument type mismatch
  121. at org.apache.ibatis.executor.keygen.SelectKeyGenerator.processGeneratedKeys(SelectKeyGenerator.java:90)
  122. at org.apache.ibatis.executor.keygen.SelectKeyGenerator.processBefore(SelectKeyGenerator.java:47)
  123. at org.apache.ibatis.executor.statement.BaseStatementHandler.generateKeys(BaseStatementHandler.java:141)
  124. at org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:63)
  125. at org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:41)
  126. at org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:46)
  127. at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:636)
  128. at org.apache.ibatis.executor.ReuseExecutor.doUpdate(ReuseExecutor.java:50)
  129. at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
  130. at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
  131. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  132. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  133. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  134. at java.lang.reflect.Method.invoke(Method.java:498)
  135. at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
  136. at com.sun.proxy.$Proxy159.update(Unknown Source)
  137. at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
  138. at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
  139. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  140. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  141. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  142. at java.lang.reflect.Method.invoke(Method.java:498)
  143. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)
  144. ... 115 common frames omitted
  145. Caused by: org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.ruoyi.ids.domain.IdsFileList' with value '33' Cause: java.lang.IllegalArgumentException: argument type mismatch
  146. at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:185)
  147. at org.apache.ibatis.reflection.wrapper.BeanWrapper.set(BeanWrapper.java:59)
  148. at org.apache.ibatis.reflection.MetaObject.setValue(MetaObject.java:140)
  149. at org.apache.ibatis.executor.keygen.SelectKeyGenerator.setValue(SelectKeyGenerator.java:115)
  150. at org.apache.ibatis.executor.keygen.SelectKeyGenerator.processGeneratedKeys(SelectKeyGenerator.java:80)
  151. ... 137 common frames omitted
  152. Caused by: java.lang.IllegalArgumentException: argument type mismatch
  153. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  154. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  155. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  156. at java.lang.reflect.Method.invoke(Method.java:498)
  157. at org.apache.ibatis.reflection.invoker.MethodInvoker.invoke(MethodInvoker.java:44)
  158. at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:180)
  159. ... 141 common frames omitted

解决的办法有两种

1、把获取的id由数字改成字符串,

  1. <selectKey keyProperty="id" resultType="long" order="BEFORE">
  2. SELECT seq_ids_file_list.NEXTVAL as id FROM DUAL
  3. </selectKey>

改成

  1. <selectKey keyProperty="id" resultType="string" order="BEFORE">
  2. SELECT seq_ids_file_list.NEXTVAL as id FROM DUAL
  3. </selectKey>

 

2、把表结构的主键id改为数字类型

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/241361?site
推荐阅读
相关标签
  

闽ICP备14008679号