Spring MVC 批量添加数据怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC 批量添加数据怎么做相关的知识,希望对你有一定的参考价值。

使用List集合形式的参数的批量操作

    如果使用List集合来进行批量操作,首先要把待添加的数据与实体类对应(一个实体类通常对应数据库里的一张表, 下面的例子中Actor类就是一个实体类, 它对应了数据库中的 "t_actor"数据表).

比如"t_actor"数据表中有id,first_name,last_name三个字段, 那么对应Actor类就要有id, firstName, lastName属性, 且都得有getter, setter方法.

spring jdbc core 包中提供了一个SqlParamterSource 对象,这个对象用于SQL语句参数的设置.

使用SqlParameterSourceUtils.createBatch这个方法,把javabean(即上面说的实体类)的list  转化成array,spring会循环的进行取值;

public class JdbcActorDao implements ActorDao 
 private NamedParameterTemplate namedParameterJdbcTemplate;

 public void setDataSource(DataSource dataSource) 
   this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
 

 public int[] batchUpdate(final List<Actor> actors) 
   SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(actors.toArray());
   int[] insertCounts = namedParameterJdbcTemplate.batchUpdate(
       "INSERT INTO t_actor (id,first_name,last_name) VALUES(:id,:firstName,  :lastName )",batch);
   return insertCounts;
 

 // ... additional methods


http://www.tuicool.com/articles/Ar6RNr

参考技术A 从MiMI数据库导入相互作用的方法,应该也可以通过插件完成。

至此第一部分基本完成,下面开始第二部分,基因列表的各种操作,总的目的是从一份基因列表出发,在Cytoscape中看到他们之间的相互作用。本回答被提问者和网友采纳

spring MVC实践

使用spring mvc提供restful风格的接口,实现前后端分离,后端只提供数据接口,而不做页面渲染。因此可对接口做统一处理:

  1. 请求参数校验
  2. 响应数据格式
  3. 全局异常处理

通过以上统一处理,开发人员可专注于业务处理,把校验,异常响应的逻辑分离出来。

请求参数校验:

  • 对于url中的参数

    • 如果添加@RequestParam,但没有传递该参数,则抛出MissingServletRequestParameterException异常
    • 如果添加@Max等注解,同时不满足该条件,抛出ConstraintViolationException 或BindException异常
  • 对于request body请求体中的参数

    • Bean前添加@RequestBody,如果没有请求体,抛出HttpMessageNotReadableException异常
    • 在bean前添加@Validate注解,bean中属性添加@Max,@NotNull等注解,即对响应属性进行校验,如果不满足,抛出MethodArguementNotValidException
    • @Validate内可添加group,表明需要校验的操作,@Max可添加groups,当groups包含group时,则进行校验。
    • Bean中也可自定义注解,通过实现ConstraintValidator接口自定义校验逻辑。如果校验失败,会抛出MethodArgumentNotValidException异常,

这些异常都被全局异常处理拦截,返回异常信息。

响应数据格式:

  • 建立统一响应类JsonResp<T>,泛型T为业务响应内容,可为String,List,java bean等。定义属性result表明响应是否成功,响应码code,响应码信息msg。这里code及msg与全局异常处理的响应枚举类相对应。
  • 定义ResponseBodyhandler实现ResponseBodyAdvice接口,当响应类型为json时,如果响应类型为JsonResp,直接响应给客户端;如果不是,则new JsonResp,将响应体set进去,响应给客户端。
  • 在controller的方法返回类型可任意定义String,List,java bean,在ResponseBodyhandler转化为统一JsonResp形式。如果是流文件,则直接返回不会转化为JsonResp形式。这样可将响应包装成统一的JsonResp数据格式,便于前端处理。

全局异常处理

  • 建立响应枚举类ResponseEnum,定义业务需要的响应码及响应码信息
  • 建立自定义异常类BaseException,继承运行时异常RuntimeException,初始化时设置ResponseEnum。
  • 建立异常捕捉类GlobalExceptionAspect,类中添加@RestCOntrollerAdvice注解,使用@Exceptional捕捉参数校验异常和自定义异常BaseException。
  • 最外层捕捉Exception,捕捉未定义的异常
  • 如果遇到业务报错,throw new BaseException(ResponseEnum.xxx),抛出自定义异常,该异常由GlobalExceptionAspect切面捕捉,统一响应至客户端

统一定义异常响应码,便于查看
避免在业务代码里进行异常的响应,简化代码

这些统一处理的本质是使用fliter或者aop拦截请求和响应参数进行通用逻辑处理,因此,可对请求进行敏感词过滤,参数加解密等处理,解耦业务逻辑。

以上是关于Spring MVC 批量添加数据怎么做的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 批量插入数据怎么做

Oracle 批量插入数据怎么做

Oracle 批量插入数据怎么做

如何在 spring-mvc 中将日志记录添加到 webflux 端点?

spring mvc中如何读取数据库

Thinkphp怎么批量添加数据