springBoot基本知识总结和使用实例
-
测试用例的使用:
-
在test目录下编写:
-
添加注解@RunWith(SpringRunner.class);@SpringBootTest
-
测试controller方法,需要测试请求地址。则需要新增注解:@AutoConfigrueMockMvc
-
在测试方法加注解@Test
-
-
使用命令行编译运行java程序:
-
打包:先进入到项目的目录,删除target文件,启动cmd命令窗口,执行打包命令:mvn clean package或者忽略测试用例:mvn clean package -Dmaven.test.skip=true;
-
运行项目:Java -jar target/[项目jar报名]
-
会执行测试用例,忽略测试用的启动
-
-
mybatis的使用:
-
导入架包依赖(找到对应的版本,和springBoot版本对应)
-
导入链接数据库驱动(不需要版本号)
-
配置数据源,连接数据库;
-
通过注解使用mybatis:
-
直接在dao层定义接口,定义对应的方法即可使用mybatis:通过在方法添加注解@Select("sql")注解来实先mybatis的使用;
-
-
public interface CategoryMapper {
-
@Select("select * from mall_category where id = #{id}")
-
Category findById(@Param("id") Integer id);
-
}
-
-
mybatis使用xml文件配置:
-
通过在接口中添加注解@Mapper来扫面接口:
-
接口上的@Mapper注解可以写在启动类中使用扫描来替代: 在启动类上天添加注解@MapperScan(basepackages = "com.hans.pay.mall[mybatis接口包路径]")
-
xml文件的样式可以在官网找到对应例子:在mybatis.xml文件中写sql语句:resultType是返回结果类型;
-
<mapper namespace="com.hans.pay.mall.dao.CategoryMapper"> //接口的包路径
-
-
<sql id="Base_Column_list">
-
id, parent_id,name,status,sort_order,create_time,update_time
-
</sql>
-
//接口中对应的方法名
-
<select id="queryById" resultType="com.hans.pay.mall.pojo.Category">
-
select <include refid="Base_Column_list"/>
-
from mall_category
-
where id = #{id}
-
</select>
-
</mapper>
-
-
-
Mybatis三剑客:
-
mybatis-generator
-
Mybatis-plugin
-
Mybatis-PageHelper
-
-
@RequestBody和@ResponseBody:
-
requestBody是指定请求参数的格式,默认json。作用在方法上,参数前
-
responseBody是指定返回的参数格式。作用在方法上,需要返回的方法上,若类上面使用@RestController注解,则方法不需要指定@ResponseBody。若类注解使用的是@Controller则需要指定通过@responsebody指定方法的返回值类型。
-
-
配置文件中定义参数,并在java中使用
-
在yml文件中定义参数,严格遵守定义的格式:例如:
-
-
在java中定义个实体类,然后使用注解@@ConfigurationProperties(prefix = "limit")和@Component;这样既可以使用配置文件中的配置参数,并转化成对应的实体类了;
-
-
-
Lombok插件的使用:该插件主要是自动加载实体类的get()、set()方法;
-
添加注解@Data即可自动加载set、get方法;
-
插件的安装需要下载,并安装,网上很多教程;
-
-
控制台打印日志:
-
配置文件中配置控制台sql日志的输出:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
-
使用Spring中的MD5加密:
-
spring中自带MD5的加密方法,DigestUtils
-
例如:user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes(StandardCharsets.UTF_8)));
-
解密方法:DigestUtils.md5DigestAsHex(passwoed.getBytes(StandardCharsets.UTF-8))
-
-
返回值不返回null值得配置注解:@JsonInclude(value = JsonInclude.Include.NON_NULL)
-
校验表单数据不为空:
-
@NotBlank 用户非空、@NotNull 用户String空格、@NotEmpty 用户集合
-
-
异常处理返回值:
-
@ControllerAdvice、@ExceptionHandler(RuntimeException.class)注解的使用
-
-
设置登录session
-
通过HttpServletRequest对象获取HttpSession对象;HttpSession session = httpServletRequest.getSession();
-
-
session和Cookie:
-
分布式Cookie:redis+Cookie;
-
Cookie跨域,是域名不同时Cookie也不同;
-
session和Cookie是一对,Cookie里存了了session的ID,只要Cookie一样,session也是一样的。
-
Cookie存在于客户端,session是服务端。不同的域名Cookie也不同。
-
-
设置session过时时间:
-
server.servlet.session.timeout: 360
-
-
拦截器的使用:
-
@Configuration注解的使用:
-
拦截器统一拦截登录状态信息:
-
实现拦截器的方式:实现接口:HandlerInterceptor,重写接口方法 preHandle(HttpServletRequest request , HttpServletResponse response);
-
使用拦截器:写一个拦截器配置类,实现接口WebMvcConfigurer。重写方法 public void addInterceptors(interceptorRegistry registry){ registry.addInterceptor(new UserLoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login","/user/register"); 一个是需要拦截的url,一个是不拦截的URL;
-
-
SpringBoot中mybatis的使用:
-
接口 中传入的参数不再是int,string类型,则需要传参@Param("categoryIdSet") Set<Integer> categor;
-
-
.xml文件则使用foreach语句循环遍历参数集合:
-
-
PageHelper的使用:
-
springBoot中使用PageHelper,引入架包依赖,使用:PageHelper.startPage(pageNum, pageSize);
-
使用PageInfo对象来封装查询结果:PageInfo pageInfo = new PageInfo<T>(List); pageInfo.setList(list);
-
-
SpringBoot 中使用redis缓存:
-
加入依赖:
-
配置yml文件信息:
-
写入到redis中:StringRedisTemplate redisTemplate = new SpringRedisTemplate(); redisTemplate.opsForValue().set(key,value);
-
key是String类型,value也是String类型,可以将value转成json格式,存进去,key值可以是我们自定义的值;
-
-
-
引入依赖包
-
使用它的方法
-
-
RabbitMQ的使用:
-
启动mq服务的命令(win):rabbitmq-plugins enable rabbitmq_management
-
然后访问mq管理界面:http://localhost:15672 guest/guest
-
MQ的使用:引入依赖,
-
创建发送消息:使用对象AmqpTemplate.convertAndSend(key,value)方法;
-
接受消息,创建一个监听类,通过注解获取消息队列,被获取的消息将会被消耗。
-
-
Spring-Data-Jpa:
-
引入依赖即可使用jpa框架;
-
jpa的使用,dao层直接写一个接口继承jap接口:
-
这样即可使用jpa的方法;
-