阅读完需:约 6 分钟



————————————————————————————————————
model层
model层即数据库实体层,也被称为entity层,pojo层。
一般数据库一张表对应一个实体类,类属性同表字段一一对应。
dao层
dao层即数据持久层,也被称为mapper层。
dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
service层
service层即业务逻辑层。
service层的作用为完成功能设计。
service层调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计。
controller层
controller层即控制层。
controller层的功能为请求和响应控制。
controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。
————————————————————————————————————
MyBatis中参数使用 @Param 注解的四种使用场景
(在springboot和mybatis开发的时候常用)
第一种:方法有多个参数,需要@Param(最常见)
第二种:方法参数要取别名,需要@Param
第三种:xml中的SQL使用了$,需要@Param
第四种:动态SQL中使用参数作为变量,则需要@Param注解,即使只有一个参数。
第五种:使用数组的时候需要@Param,java在运行的时候会把List queryAll(int offset,int limit);中的参数变成这样:queryAll(int arg0,int arg1),这样我们就没有办法去传递多个参数。
一般来说除了map和pojo类型,都要使用@param
————————————————————————————————————
@RequestBody、@RequestParam和@RequestPart 的区别
@RequestBody
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
$.ajax({
url:"/login",
type:"POST",
data:'{"userName":"admin","pwd","admin123"}',
content-type:"application/json charset=utf-8",
success:function(data){
alert("request success ! ");
}
});
@requestMapping("/login")
public void login(@requestBody String userName,@requestBody String pwd){
System.out.println(userName+" :"+pwd);
}
这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是假如我有一个User类,拥有如下字段:
String userName;
String pwd;
那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。
@RequestPart
可以使用@RequestPart
处理接收到的文件。
/**
* 单文件上传
* @param file
* @param bucket
* @return
*/
@RequestMapping("uploadFile")
public JsonResult uploadFile(@RequestPart("file") MultipartFile file, @RequestParam String bucket){
String fileUrl = aliossService.uploadFile(file, bucket);
Map<String,String> result = new HashMap<>();
result.put("fileUrl",fileUrl);
return success(result);
}
@RequestParam
Spring
中用@RequestParam
来处理Content-Type
为application/x-www-form-urlencoded
数据。修饰的对象可以是基本数据类型和自定义对象。
@RequestParam的原理是Spring
将Request.getParameter()
中的Key-Value
参数Map
转化成了参数@RequestParam
修饰的基本类型数据或对象。
@RequestParam同时适用于get和post,只要Content-Type
为application/x-www-form-urlencoded
。
注意:使用@RequestBody接受的参数是不会被Servlet转化统一放在request对象的Param参数集中
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””) value:参数名 required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。 defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
/**
* 上传字符串
* @param stringFile
* @param bucket
* @return
*/
@RequestMapping("uploadStringFile")
public JsonResult uploadStringFile(@RequestParam("stringFile") String stringFile, @RequestParam("bucket") String bucket){
String fileUrl = aliossService.uploadStringFile(stringFile, bucket);
Map<String,String> result = new HashMap<>();
result.put("fileUrl",fileUrl);
return success(result);
}
1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
3.@RequestParam也同样支持multipart/form-data请求。
4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。
按需加载Bean
@Configuration
@ConditionalOnClass(WhiteListProperties.class)
@EnableConfigurationProperties(WhiteListProperties.class)
public class WhiteListAutoConfigure {
@Bean("whiteListConfig")
@ConditionalOnMissingBean
public String whiteListConfig(WhiteListProperties properties) {
return properties.getUsers();
}
}
- @ConditionalOnClass(WhiteListProperties.class),当 WhiteListProperties 位于当前类路径上,才会实例化一个类。除此之外还有其他属于此系列的常用的注解。
- @ConditionalOnBean 仅仅在当前上下文中存在某个对象时,才会实例化一个 Bean
- @ConditionalOnClass 某个 CLASS 位于类路径上,才会实例化一个 Bean
- @ConditionalOnExpression 当表达式为 true 的时候,才会实例化一个 Bean
- @ConditionalOnMissingBean 仅仅在当前上下文中不存在某个对象时,才会实例化一个 Bean
- @ConditionalOnMissingClass 某个 CLASS 类路径上不存在的时候,才会实例化一个 Bean
- @ConditionalOnProperty 通过属性name以及havingValue来实现是否加载一个类