抽丝剥茧JavaWeb应用之扯扯springMVC常用注解

本文主要扯一扯工作中经常使用的SpringMVC注解和mybatis批量更新Oracle。本文使用的springmvc的版本是4.1.4.RELEASE

1.项目经常性使用的SpringMVC注解有:@Controller (标识这个类是一个控制类,用于映射外部的HTTP请求,只能作用ElementType.TYPE上)和 @RequestMapping(用于标识匹配方法的路径) 这两个都是MVC基于DispatcherServlet分发HTTP请求的基础。参见

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-introduction

 @RestController注解 = @Controller + @ResponseBody

参见源码:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

	/**
	 * The value may indicate a suggestion for a logical component name,
	 * to be turned into a Spring bean in case of an autodetected component.
	 * @return the suggested component name, if any
	 * @since 4.0.1
	 */
	String value() default "";

}

 @RequestParam 用于标识请求参数名称(value())及是否需要(required()),它们均有默认值。

 @RequestMapping 可以作用ElementType.METHOD, ElementType.TYPE上。可设置的元素如下所示:

@ResponseBody
	@RequestMapping(name = "abc" ,
			value = "/abc" , // 映射路径
			method = { RequestMethod.GET , RequestMethod.POST},  //请求方法
			headers = "content-type=text/html, //请求头的文档类型,不能设置编码类型,否则会报错
			params="!myParam", //方法接受的参数中不能存在myParam参数名
			consumes = {"text/html", "application/json"},  //方法接受的数据格式
			produces = "application/json" //方法返回json格式
			)
	public ResultMessageDTO demo1(){
		return ResultCodeUtil.genResult(ReturnCodeEnum.SUCC , new MapData("hello", "springmvc"));
	}

 @RequestBody:主要参见官方文档 :

@RequestBody 
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-requestbody

 指示方法参数应绑定到HTTP请求正文的值。通过使用HttpMessageConverter将请求体转换为method参数。 HttpMessageConverter负责将HTTP请求消息转换为对象,并从对象转换为HTTP响应体。在项目中可以这样配置

<bean id="mappingJackson2HttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
				<value>text/json;charset=UTF-8</value>
				<value>application/json;charset=UTF-8</value>
			</list>
		</property>
	</bean>
	<!-- 采用SpringMVC自带的JSON转换工具,支持@ResponseBody注解 -->
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJackson2HttpMessageConverter" />    <!-- JSON转换器 -->
			</list>
		</property>
	</bean>

 HttpMessageConverter 是一个策略接口,实现此接口的方法使将HTTP请求到响应的一个转换器。

2.mybatis批量更新的一种方法:

<update id="updateAA" parameterType="java.util.List">
	<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">  
                update t_aa   
                <set>  
                  a = #{item.a , jdbcType=VARCHAR} ,
                  m = sysdate ,
                  b = #{item.b , jdbcType=VARCHAR}
                </set>  
                where c = #{item.c ,jdbcType=VARCHAR}  
                and d = #{item.d,jdbcType=VARCHAR}
         </foreach>  
</update

 以上。