Boot中如果需要引入其他依赖坐标
点击这里搜索

一:使用IDEA快速创建

我们可以借助IDEA直接快速创建Boot项目,也可以通过其他方式【Boot官网】

1:创建项目

2:写一个controller测试

@Controller
public class HelloController {@RequestMapping("hello")@ResponseBodypublic String hello(){return "Hello SpringBoot";}
}

3:测试

http://localhost:8080/hello
访问成功,就表示创建SpringBoot没有问题

二:Banner 图标

1:自定义启动图标

在 main 目录下新建 resources 资源目录,并在该目录下新建banner.txt 文本文件,可以设置自定义图标
在线生成图标:http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something

2:设置关闭banner图

在启动器中设置,将原来启动方式注释掉

@SpringBootApplication
public class SpringBootStudentApplication {public static void main(String[] args) {//        SpringApplication.run(SpringBootStudentApplication.class, args);SpringApplication springApplication = new SpringApplication(SpringBootStudentApplication.class);
// 设置 banner 图标关闭springApplication.setBannerMode(Banner.Mode.OFF);springApplication.run();}
}

三:SpringBoot配置文件

在使用IDEA创建完成后,默认在resources目录下有【application.properties】一个文件,可以进行配置

1:配置文件优先级

在SpringBoot中可以在多个目录下编写配置文件,而配置文件的优先级不同

  • 项目下/config 创建配置文件 优先级最高
  • 项目下 创建配置文件 优先级第二
  • resources/config 创建配置文件 优先级第三
  • resources下 创建配置文件 优先级最四

2:多环境配置文件

需要创建多个配置文件
名字如:application.properties application-text.properties application-dev.properties
在默认读取的配置文件【application.properties】中设置

#多环境配置,选择激活使用的配置文件
spring.profiles.active=dev
#spring.profiles.active=text

3:常见的配置

# 设置项目启动端口
server.port=8081
# 设置生成的日志文件路径
logging.file.path=wangyuan_boot

4:YML语法

可以创建一个在resources目录下创建一个 application.yml

4.1:YML文件

# 设置端口号 和项目日志路径,
#YML语法,是这种分层次的 key value
server:port: 8082logging:file:path: wangyuan_boot

4.2:YML优点

推荐使用yml语法 默认是properties语法

 区别1: properties               key=value
​        yml [对于空格要求极其严格]     key:   [中间必须有空格] 空格 value区别2: properties                只能支持key value形式yml                       支持key value ,数组,对象,集合等形式
区别3:properties                 没有测试是否支持el表达式   yml                      支持el表达式 如:${random.int} 随机值,\${random.uuid}随机uuid   \${对象.属性:另外的值} 三元表达式判断属性是否存在,不存在就输出另外的值,存在就输出存在的值
区别4: properties                不支持松散绑定yml                         支持松散绑定【yml中间加“-”,实体类可以不加,也能绑定】

5:日志配置格式

logging:pattern:level: debugconsole: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger- %msg%n"file:path: "."name: "SpringBoot.log"

四:Freemarker & Thymeleaf 视图集成

1:Freemarker 集成

Freemarker 默认默认视图路径 resources/templates 目录(由自动化配置类FreemarkerProperties 决定),该目录可以进行在 application.yml 中进行修改

1.1:引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

1.2:配置文件配置

#    设置Freemarker格式
spring:freemarker:suffix: .ftl #后缀名是.ftlcontent-type: text/htmlcharset: utf-8 #编码格式template-loader-path: classpath:/views/ #文件路径

1.3:编写controller

    @RequestMapping("helloFreemarker")public String helloFreemarker(){return "index";}

1.4:启动访问

http://localhost:8082/helloFreemarker

2:Thymeleaf 视图集成

2.1:引入依赖

<!--        thymeleaf--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

2.2:配置文件设置

spring:thymeleaf:prefix: classpath:/html/ #设置文件路径 html/index.htmlcache: false

2.3:编写controller

    @RequestMapping("helloFreemarker")public String helloFreemarker(){return "index";}

3:注意点

thymeleaf和freemarker可以同时设置两个模板
当返回视图名称,两个模板名称一样时,优先:freemarker
如果不一样,就找到对应的模板

五:静态资源

静态资源默认必须:在 resources 目录下创建 static 或者 public 目录,然后存放 images、js、css 等静态资源文件
也可以通过配置,修改静态资源路径,当配置自定义静态资源路径之后,原来的静态资源目录就无法使用了

spring: # 修改默认的静态寻址资源目录 多个路径之间用逗号隔开
resources:
static-locations: classpath:/public/,classpath:/static/,classpath:/os/

六:SpringBoot打包部署

1:打包命令

idea 下配置 clean compile package -Dmaven.test.skip=true 执行打包命令
默认打包为jar包,如果需要打war包,需要一些设置

2:设置打war包

2.1:修改pom文件

    <groupId>com.wangyuan</groupId><artifactId>CRM</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><!--        引入包,设置打包时候,忽略默认内置的tomcat--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>
<build><!-- 配置生成的war文件名 --><finalName>springboot</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

2.2:编写启动类

继承SpringBootServletInitializer 重写SpringApplicationBuilder 方法

@SpringBootApplication
public class SpringBootStudentApplication extends SpringBootServletInitializer {public static void main(String[] args) {//        SpringApplication.run(SpringBootStudentApplication.class, args);SpringApplication springApplication = new SpringApplication(SpringBootStudentApplication.class);// 设置 banner 图标关闭springApplication.setBannerMode(Banner.Mode.OFF);springApplication.run();}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {//return builder.sources(SpringBootStudentApplication.class);}
}

2.3:打包

配置完成,即可运行刚配置的maven打包命令来打包了

3:部署项目

3.1:运行jar包

打开本地 dos 窗口,执行 java -jar命令 部署已打好的 jar 包文件。
命令如下: java -jar jar包所在目录

3.2:运行war包

把打包好的war包拿到外部的tpmcat ,部署到tomcat中,启动tomcat,就发布成功了

七:SpringBoot整合MyBaits

SpringBoot版本设置为2.2.2.RELEASE 【如果版本报红正常启动即可】

1:引入jar包

<!-- 这是boot版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version> </parent>
-->     <!-- mybatis 集成 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><!-- springboot 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.13</version></dependency><!-- mysql 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- c3p0 数据源 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.5</version></dependency>

2:设置mybatis的yml配置

#mybatis配置
mybatis:mapper-locations: classpath:/mappers/*.xmltype-aliases-package: com.wangyuan.pojo#下划线转驼峰
#  configuration:
#    map-underscore-to-camel-case: true
# pageHelper指定需要分页的数据源类型
pagehelper:helper-dialect: mysql
#显示执行的sql
#logging:
#  file:
#    path: wangyuan_boot
logging:level:com:wangyuan:mapper: debug
spring:datasource:type: com.mchange.v2.c3p0.ComboPooledDataSource #c3p0数据源username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/spring_ssm_login?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8#type: com.zaxxer.hikari.HikariDataSource  #自带的数据源 【这里之前因为boot版本太高,导致c3p0的url报错,使用自带的测试不报错,确认是版本问题】

3:设置项目路径已经连接的表结构

数据库名:spring_ssm_login

4:编写pojo实体类user

User

@Component
@Data  //这些是lombok注解,表示省略get set 构造器等方法
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {private Integer userId;private String userName;private String userPwd;private String userEmail;private String userMobile;private Date createDate;private Date updateDate;private Integer userDelete;
}

5:编写mappers配置文件

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wangyuan.mapper.UserMapeper"><select id="queryUserById" parameterType="int" resultType="com.wangyuan.pojo.User">select * from user where userid=#{userId}</select>
</mapper>

6:编写对应mapper接口

UserMapeper

public interface UserMapeper {User queryUserById(Integer userId);
}

7:编写service

UserService

@Service
public class UserService {@Autowiredprivate UserMapeper userMapeper;public User queryUserById(Integer userId){return userMapeper.queryUserById(userId);}
}

8:编写controller

HelloController

@Controller
@RequestMapping("/User")
public class HelloController {@Autowiredprivate UserService userService;@RequestMapping("/queryUserById/{userId}")@ResponseBodypublic User queryUserById(@PathVariable Integer userId){User user = userService.queryUserById(userId);return user;}
}

9:编写启动类

@SpringBootApplication
@MapperScan("com.wangyuan.mapper") //@Mapper  扫描包
public class SpringBootStudentApplication {public static void main(String[] args) {//        SpringApplication.run(SpringBootStudentApplication.class, args);SpringApplication springApplication = new SpringApplication(SpringBootStudentApplication.class);// 设置 banner 图标关闭springApplication.setBannerMode(Banner.Mode.OFF);springApplication.run();}
}

10:启动项目测试

http://localhost:8082/springBootMybatis/User/queryUserById/1

八:分页查询

1:编写分页实体类

@Data
@NoArgsConstructor
@AllArgsConstructor//lombok
public class UserQuery implements Serializable {private Integer pageNum = 1; // 当前页private Integer pageSize = 10; // 每页显示的数量private String userName; // 查询条件:
}

2:编写mapper.xml中sql

UserMapeper.xml

    <select id="queryUserPaging" parameterType="com.wangyuan.paging.UserQuery" resultType="com.wangyuan.pojo.User">select * from user</select>

3:编写xml绑定的接口

UserMapeper

     //     分页查询用户List<User> queryUserPaging(UserQuery userQuery);

4:编写service方法

UserServiceImp

    public PageInfo<User> queryUserPaging(UserQuery userQuery) {PageHelper.startPage(userQuery.getPageNum(), userQuery.getPageSize());return new PageInfo<User>(userMapeper.queryUserPaging(userQuery));}

5:编写controller

/*** 通过指定参数,分页查询用户列表* @param userQuery* @return*/@RequestMapping("/queryUserPaging")@ResponseBodypublic PageInfo<User> queryUserPaging(UserQuery userQuery){return userService.queryUserPaging(userQuery);}

九:API 文档构建工具-Swagger2

1:导入依赖

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>

2:添加配置类

@Configuration//表示是配置类
@EnableSwagger2//Swgger2
public class Swagger2 {@Beanpublic Docket createRestApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.wangyuan.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("用户管理接口API文档").version("1.0").build();}
}

3:使用

@Api:用在请求的类上,说明该类的作用  tags="说明该类的作用"@Api(tags = "关于用户操作API")
----------------------------------------------------------------------------@ApiOperation:"用在请求的方法上,说明方法的作用"value="说明方法的作用"notes="方法的备注说明"@ApiOperation(value = "测方法用于测试SpringBoot项目是否可以访问",tags = "适用于测试,没有任何业务,可以删除")
------------------------------------------------------------------------@ApiImplicitParams:用在请求的方法上,包含一组参数说明@ApiImplicitParam:用在 @ApiImplicitParams 注解中,指定一个请求参数的配置信息name:参数名value:参数的汉字说明、解释required:参数是否必须传paramType:参数放在哪个地方· header --> 请求参数的获取:@RequestHeader· query --> 请求参数的获取:@RequestParam· path(用于restful接口)--> 请求参数的获取:@PathVariable· body(不常用)· form(不常用)dataType:参数类型,默认String,其它值dataType="Integer"defaultValue:参数的默认值@ApiImplicitParams({@ApiImplicitParam(name ="pageNume",value = "传递当前页",paramType = "query",dataType = "int",defaultValue = "1"),@ApiImplicitParam(name ="pageSize",value = "每页显示的数量",paramType = "query",dataType = "int",defaultValue = "10"),@ApiImplicitParam(name ="userName",value = "查询条件",paramType = "query",dataType = "String")})
-------------------------------------------------------------------------@ApiResponses:用于请求的方法上,表示一组响应@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息code:数字,例如400message:信息,例如"请求参数没填好"response:抛出异常的类@ApiResponses({@ApiResponse(code=400, message="请求参数没填好"),@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对")})
-----------------------------------------------------------------------@ApiModel:用于响应类【就是返回对象时候,对于返回对象的描述,用在实体类上。。】上,表示一个返回响应数据的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:用在属性上,描述响应类的属性@ApiModel(description = "user实体类,对应数据库中user表")
public class User implements Serializable {@ApiModelProperty(value = "用户id")private Integer userId;@ApiModelProperty(value = "用户姓名")private String userName;@ApiModelProperty(value = "用户密码")private String userPwd;@ApiModelProperty(value = "用户邮箱")private String userEmail;@ApiModelProperty(value = "用户手机号")private String userMobile;@ApiModelProperty(value = "用户创建日期")private Date createDate;@ApiModelProperty(value = "用户修改日期")private Date updateDate;@ApiModelProperty(value = "用户账号状态")private Integer userDelete;
}
------------------------------------------------------------------------

十:分布式缓存【Ehcache】

Spring Boot 对 Ehcache 的使用提供支持,所以在 Spring Boot 中只需简单配置即可使用 Ehcache 实
现数据缓存处理
在使用过程中,value就是使用的缓存名称,缓存名称在配置文件中配置,key值表示在缓存中,这一条数据以那个字段为准,表示重复,一般设置为表数据的ID字段

1:引入依赖

<!--             Ehcache --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId></dependency>

2:创建配置文件

src/main/resources 目录下添加 ehcache.xml 文件,内容如下
注意:配置的cache标签就是缓存名称,当需要使用注解的时候,名称需要和你设置的缓存名称一致,这里命名为user!!!

<ehcache name="mycache"><!--如果不使用磁盘存储,只需要将diskStore注释掉即可;如果使用,需要在ehcache.xml文件中的ehcahce元素下的定义一个diskStore元素并指定其path属性。-->
<!--    <diskStore path="C:\java\cache"/>--><!--name:缓存名称。maxElementsInMemory:缓存最大数目maxElementsOnDisk:硬盘最大缓存个数。eternal:对象是否永久有效,一但设置了,timeout将不起作用。overflowToDisk:是否保存到磁盘,当系统宕机时timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,表示可闲置时间无穷大。timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0,也就是对象存活时间无穷大。diskPersistent:是否缓存虚拟机重启期数据Whether the disk store persists between restarts of the VirtualMachine. The default value is false.diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,会根据指定的策略去清理内存默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。clearOnFlush:内存数量最大时是否清除。memoryStoreEvictionPolicy:可选策略有:LRU(最近最少使用,默认策略)Less Frequently Used,就是例子中使用的策略,就是一直以来最少被使用的。FIFO(先进先出)first in first out,这个是大家最熟的,先进先出。LFU(最少访问次数)Least Recently Used,最近最少使用的。
缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的
时候,
那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
--><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"maxElementsOnDisk="10000000"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"></defaultCache><cachename="user1" eternal="false"maxElementsInMemory="100"overflowToDisk="false"diskPersistent="false"timeToIdleSeconds="0"timeToLiveSeconds="300"memoryStoreEvictionPolicy="LRU"/>
</ehcache>

3:指定缓存的配置

Spring:## Ehcache缓存配置cache:ehcache:config: classpath:ehcache.xml

4:开启缓存

在 Starter 启动入口类中,添加 @EnableCaching 注解,启动缓存

@SpringBootApplication
@MapperScan("com.wangyuan.mapper") //@Mapper
@EnableCaching
public class SpringBootStudentApplication {public static void main(String[] args) {//        SpringApplication.run(SpringBootStudentApplication.class, args);SpringApplication springApplication = new SpringApplication(SpringBootStudentApplication.class);// 设置 banner 图标关闭springApplication.setBannerMode(Banner.Mode.OFF);springApplication.run();}
}

5:使用缓存

@CacheConfig
用于标注在类上,可以存放该类中所有缓存的公有属性,比如设置缓存的名字。【我们也可以不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义! 这个不会用】

@Cacheable
应用到读取数据的方法上,即可缓存的方法,如查找方法,先从缓存中读取,如果没有再调用相应方法获取数据,然后把数据添加到缓存中

value、cacheNames:两个等同的参数( cacheNames 为 Spring 4 新增,作为 value 的别
名),用于指定缓存存储的集合名。由于 Spring 4 中新增了 @CacheConfig,因此在 Spring 3 中
原本必须有的 value 属性,也成为非必需项了
-------------------------------------------------------------------------
key:缓存对象存储在Map集合中的 key 值,非必需,缺省按照函数的所有参数组合作为 key 值,
若自己配置需使用 SpEL 表达式,比如:@Cacheable(key = "#p0"):使用函数第一个参数作为缓
存的 key 值,更多关于SpEL 表达式的详细内容可参考官方文档
-------------------------------------------------------------------------
condition:缓存对象的条件,非必需,也需使用SpEL表达式,只有满足表达式条件的内容才会被
缓存,比如:@Cacheable(key = "#p0", condition = "#p0.length() < 3"),表示只有当第一个参数
的长度小于3的时候才会被缓存
-------------------------------------------------------------------------
unless:另外一个缓存条件参数,非必需,需使用 SpEL 表达式。它不同于 condition 参数的地方
在于它的判断时机,该条件是在函数被调用之后才做判断的,所以它可以通过对 result 进行判断。
-------------------------------------------------------------------------
keyGenerator:用于指定 key 生成器,非必需。若需要指定一个自定义的 key 生成器,我们需要
去实现org.springframework.cache.interceptor.KeyGenerator 接口,并使用该参数来指定。需要
注意的是:该参数与 key 是互斥的
-------------------------------------------------------------------------
cacheManager:用于指定使用哪个缓存管理器,非必需。只有当有多个时才需要使用
-------------------------------------------------------------------------
cacheResolver:用于指定使用那个缓存解析器,非必需。需通过
-------------------------------------------------------------------------
org.springframework.cache.interceptor.CacheResolver 接口来实现自己的缓存解析器,并用该
参数指定

@CachePut
应用到写数据的方法上,如新增/修改方法,调用方法时会自动把相应的数据放入缓存

@Caching
组合多个 Cache 注解使用

@Caching(put = {@CachePut(value = "user", key = "#user.id"),@CachePut(value = "user", key = "#user.username"),@CachePut(value = "user", key = "#user.age")})

@CacheEvict
应用到移除数据的方法上,如删除方法,调用方法时会从缓存中移除相应的数据

allEntries:非必需,默认为 false。当为 true 时,会移除所有数据
beforeInvocation:非必需,默认为 false,会在调用方法之后移除数据。当为 true 时,会在调
用方法之前移除数据

6:使用案例:在service层使用缓存

@Service
public class UserServiceImp implements UserService{@Autowiredprivate UserMapeper userMapeper;@Cacheable(value = "user1", key="#userId")public User queryUserById(Integer userId){return userMapeper.queryUserById(userId);}@Override@Cacheable(value = "user1")public List<User> queryUserAll() {return userMapeper.queryUserAll();}@Overridepublic PageInfo<User> queryUserPaging(UserQuery userQuery) {PageHelper.startPage(userQuery.getPageNum(), userQuery.getPageSize());return new PageInfo<User>(userMapeper.queryUserPaging(userQuery));}@Override@CacheEvict(value = "user1", key="#userId")public int deleteUserById(Integer userId) {return userMapeper.deleteUserById(userId);}//@CachePut这里不能使用,先使用@CacheEvict@CacheEvict(value = "user1", key="#user.userId")@Overridepublic int updateUserToNmaeById(User user) {return userMapeper.updateUserToNmaeById(user);}
}

十一:事务控制【声明式事务配置】

这里 Spring Boot 集成了 mybatis 框架,mybatis 底层数据访问层实现基于 jdbc 来实现,所以在
Spring Boot 环境下对事务进行控制,事务实现由 Spring Boot 实现并自动配置,在使用时通过注解方
式标注相关方法加入事务控制即可


十二:全局异常处理

准备工作,定义一个返回信息的模板

@ApiModel(description = "响应结果 - Model信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultInfo {@ApiModelProperty(value = "响应状态码",example = "200")private Integer code=200;@ApiModelProperty(value = "响应消息结果")private String msg = "success";@ApiModelProperty(value = "响应具体结果信息")private Object result;
}

1:方式1:捕获全局所有异常

@ControllerAdvice
public class MyExceptionHandler {@ExceptionHandler(value = Exception.class)@ResponseBodypublic ResultInfo exceptionHandler(Exception e){ResultInfo resultInfo = new ResultInfo();resultInfo.setCode(300);resultInfo.setMsg("操作失败!");//判断异常类型,一般判断是否自己定义的异常,返回制定信息if(e instanceof Exception){resultInfo.setMsg("自定义异常拦截器");resultInfo.setCode(222);}return resultInfo;}
}

2:方式2:捕获指定异常

//
@ExceptionHandler(value = UserIdnotFongtException.class)
@ResponseBody
public ResultInfo userNotLoginHandler(NoLoginException authExceptions){resultInfo.setCode(232);resultInfo.setMsg("用户id不存在");return resultInfo;
}

十三: 数据校验 - Validation

注解 详细信息
@AssertFalse 可以为null,如果不为null的话必须为false
@AssertTrue 可以为null,如果不为null的话必须为true
@DecimalMax 设置不能超过最大值
@DecimalMin 设置不能超过最小值
@Digits 设置必须是数字且数字整数的位数和小数的位数必须在指定范围内
@Future 日期必须在当前日期的未来
@Past 日期必须在当前日期的过去
@Max 最大不得超过此最大值
@Min 最大不得小于此最小值
@NotNull 不能为null,可以是空
@Min 最大不得小于此最小值
@Pattern 必须满足指定的正则表达式
@Size 集合、数组、map等的size()值必须在指定范围内
@Email 必须是email格式
@Length 长度必须在指定范围内
@NotBlank 字符串不能为null,字符串trim()后也不能等于“”
@NotEmpty 不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“”
@Range 值必须在指定范围内
@URL 必须是一个URL

十四:数据校验 - JSR 303校验证

Constraint 详细信息
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式

SpringBoot学习_创建相关推荐

  1. eclipse创建springboot项目_创建一个 Spring Boot 项目,你会几种方法?

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...

  2. eclipse创建springboot项目_创建SpringBoot自动配置项目:Starter测试使用

    Starter 测试使用 完成了 starter 项目的创建.发布之后,在 Spring Boot 项目中便可以直接使用了,下面简单介绍一-下 Starter 测试使用步骤,其中省略掉了 Spring ...

  3. oracle学习_创建函数调用函数及存储过程

    ** –创建方法并调用方法 ** create or replace function f_get_name(t_empno in varchar2) return varchar2 is v_emp ...

  4. springboot 实现机器学习_机器学习入门之SpringBoot学习历程

    本文主要向大家介绍了机器学习入门之SpringBoot学习历程,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 经过同事介绍,听说了SpringBoot框架,并且亲身感受过这个框架的优 ...

  5. SpringBoot学习(一)

    2019独角兽企业重金招聘Python工程师标准>>> (一) 第一个SpringBoot程序 工作了挺久的,已学到的技术也没有系统性的整理一下,刚好最近在使用SpringBoot搭 ...

  6. SpringBoot(学习笔记)

    SpringBoot学习笔记 从今天开始就进入微服务阶段 一些小问题 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个Spring ...

  7. Springboot学习笔记(二)Web开发

    前言: 学习B站UP主狂神说视频笔记整理视频链接 狂神笔记链接 上篇笔记链接-Springboot学习笔记(一)快速上手 Web开发 静态资源 在以往的SpringMVC中所有静态资源或者页面应该放在 ...

  8. SpringBoot 学习笔记

    SpringBoot 学习笔记 文章目录 SpringBoot 学习笔记 1. SpringBoot简介 1.1 什么是Spring 1.2 Spring 是如何简化Java开发的 1.3 什么是 S ...

  9. 超详细的springBoot学习笔记

    Spring Boot 1.Spring Boot简介 Spring诞生时是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的 轻量级代替品.无需开发重量级的En ...

  10. 狂神说——SpringBoot学习

    spring官网 SpringBoot官网 spring-security版本下载 狂神官网学习 也可以搜索B站 (狂神说) 学习网站:https://www.bilibili.com/video/B ...

最新文章

  1. RMAN干掉热备份#OCP试验1#
  2. linux七大功能,值得Linux向其他系统借鉴的七大功能特性
  3. 【算法学习笔记】一、算法基础
  4. IBM与博世合作打造轻松的工业物联网
  5. [Java基础]字符流中的编码解码问题
  6. 自己写一个H5项目CI系统
  7. 前端学习(178):表格元素
  8. 调试nodejs项目接口,使用Posman,用req.body拿不到数据
  9. 目前微型计算机的内存储量一般是多大的,微型计算机内存容量的大小一般是指什么而言...
  10. lntellijidea怎么创建文件_DBC文件到底是个啥
  11. WDCP控制面板的常用liunx命令集
  12. 在中国云市场淘金?看国际云大佬如何“软着陆”
  13. 全面剖析雅虎助手以及网络实名的流氓行径(4)
  14. python中复数类型虚部为零时表示为_关于 Python 的复数类型,以下选项中描述错误的是...
  15. matlab实现幂法迭代求特征值和特征向量
  16. 用两个小例子来解释单例模式中的“双重锁定”
  17. 两条华子也换不来的数据湖讲解
  18. NDK_PROJECT_PATH=null
  19. (CVPR 2019)PointPillars: Fast Encoders for Object Detection From Point Clouds
  20. 生物信息学个人电脑系统配置(Ubuntu 20.04)

热门文章

  1. 微信小程序怎么反编译,获取微信小程序源码
  2. java我行我素购物系统_用java怎么编写 我行我素shopping购物管理体统
  3. 涵盖全网动漫、影视、小说的APP集合,手机有了他们,看遍全网
  4. RestClient操作索引库
  5. 微软文本转语音小工具(Text to speech)
  6. 计算机视觉论文-2021-06-02
  7. 中国34个省级行政区2000年-2021年逐月1km植被指数NDVI栅格数据处理及下载
  8. 测试ai模糊软件,“马赛克”视频能被AI软件彻底还原?测试结果出乎意料!
  9. kindle刷机ttl_[原创]只需USB线对Kindle 3修砖的小白教程
  10. 计算机考研浙江理工和江苏大学,杭州电子科技大和浙江理工大学这两所大学怎么样?哪所好?...