pom.xml添加核心依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--
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>
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
application.yml整合配置
##配置端口号
server:
port: 8081
## 数据源配置
spring:
datasource:
type: com.mchange.v2.c3p0.ComboPooledDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
##springboot_mybatis是数据库名
url: jdbc:mysql://127.0.0.1:3306/springboot_mybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: root
## 整合 mybatis 配置!!!!
mybatis:
##映射mapper.xml文件的位置class/mappers/*.xml
mapper-locations: classpath:/mappers/*.xml
##别名
type-aliases-package: com.xxxx.springboot.vo
configuration:
## 下划线转驼峰配置
map-underscore-to-camel-case: true
## pageHelper集成分页插件
pagehelper:
helper-dialect: mysql
#显示dao层的 执行sql语句
logging:
level:
com:
xxxx:
springboot:
dao: debug
SQL映射文件添加
resources/mappers 目录下添加UserMapper.xml 配置查询statetment
添加约束
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
mapper指定sql映射的dao下的类的路径
<mapper namespace="com.xxxx.springboot.dao.UserDao">
接下来就是mapper文件内的增删改查命令
定义一个实体类存放在vo包下
实体类的属性对应数据库的指定表中的字段相同
由dao包下dao接口定义增删改查方法CRUD方法
servcie层注入dao,编写与dao类中的同名方法
@Service
public class UserService {
@Resource
private UserDao userDao;
public User queryUserByUserName(String username){
return userDao.queryUserByUserName(username);
}
再在servlet层中注入service类
@RestController= @Requestboby+@Controller
@Resource 注入
@GetMapping("设置访问这个方法的别名)
@PathVariable 可以从UI中获取参数
@RestController
public class UserController {
@Resource
private UserService userService;
@GetMapping("user/{userName}")
public User queryUserByUserName(@PathVariable String userName){
return userService.queryUserByUserName(userName);
}
定义一个Util工具类其中的方法存放在static中
提供判断方法
Swagger2接口文档生成工具
给前端人员类,方法,属性以及参数都能够进行说明作用的信息
@API
@ApiResponses(@ApiResponses:用于请求的方法上,表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类)
@ApiModel(@ApiModel:用于响应类上,表示一个返回响应数据的信息
(这种一般用在post创建的时候,使用@RequestBody这样的场景,
请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:用在属性上,描述响应类的属性)
热部署
概念:两个类加载器,一个加载未改变的应用程序的字节码信息,一个时刻加载更新的程序字节码信息这样每次对程序进行改变就不用重新启动服务器重新加载了Ctrl+F9快捷键更新
单元测试test(快速检测某个方法,以增强程序的健壮性)
一个service层的单元测试
一个controller层的单元测试
pom文件注入相关依赖
service层的测试
/**@springBootTest(classes=starter.class)
* 指定加载类Starter这个类
* */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Starter.class)
分布式缓存Ehcache整合
1.pom.xml添ehcache坐标和依赖
spring:
datasource:
type: com.mchange.v2.c3p0.ComboPooledDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springboot_mybatis?
useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: root
devtools:
restart:
enabled: true
# 设置重启的目录,添加目录的文件需要restart
additional-paths: src/main/java
# 解决项目自动重新编译后接口报404的问题
poll-interval: 3000
quiet-period: 1000
cache:
ehcache:
config: classpath:ehcahe.xml
4.实体类序列化继承Serializable
5.Starter启动接口启动缓存 (目的是为了更快访问)
@EnableCaching、
//事务管理一般有xml和注解两种方式,
一般采用注解
@Transacation (propahation =Propahation .REQUIRED)
全局异常
数据校验的注解
@AssertFalse 可以为null,如果不为null的话必须为false
@AssertTrue 可以为null,如果不为null的话必须为true
@DecimalMax 设置不能超过最大值
@DecimalMin 设置不能超过最小值
@Digits 设置必须是数字且数字整数的位数和小数的位数必须在指定范围内
@Future 日期必须在当前日期的未来
@Past 日期必须在当前日期的过去
@Max 最大不得超过此最大值
@Min 最大不得小于此最小值
@NotNull 不能为null,可以是空
@Pattern 必须满足指定的正则表达式
@Size 集合、数组、map等的size()值必须在指定范围内
@Email 必须是email格式
@Length 长度必须在指定范围内
@NotBlank 字符串不能为null,字符串trin()后也不能等于“”
@NotEmpty 不能为null,集合、数组、map等size()不能为0;字符串trin()后可以等于“”
@Range 值必须在指定范围内
@URL 必须是一个URL