一、基础知识:
1. 在pom.xml文件中引入parent配置,这样就保证了下面使用的spring-boot的依赖版本的一致性。
2. 配置properties:
project.build.sourceingEncoding: utf-8;
java.version: 1.8;
二. Spring boot 返回JSON数据:
1. Spring boot 可以返回一个JSON,是因为底层使用了JSON框架:jsckson;
2. 使用第三方框架(fastjson):
1. 需要在application类中生成JSONConvertBean:
@Bean
public HttpMessageConverts fastJsonHttpMessageConverters() {
//1. 需要定义一个convert转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2 .添加fastJson的配置信息, 比如:是否需要格式化返回的JSON数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3. 在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4. 把convert添加中converts中
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
2. 可以在Model的属性上添加注解:
1. @JSONField(format="yyyy-MM-dd"): 格式化时间
2. @JSONField(serialize=false): 不序列化这个字段,也就不会返回给前台展示。
三、Spring Boot 热部署:
1. 添加依赖: 需要添加plugin,spring-boot-maven-plugin中的springloaded;
2. 运行方式:
1. maven build's goals spring-boot:run ##我们可以手动关闭程序,但是不会去杀死进程。
2. 把spring-loader.jar下载下来,放在lib目录下。然后配置run 参数中的VM参数: -javaagent:.\lib\springloader,jar
-noverify; ##这样就不会出现第一种情况,不会出现端口占用。但是对于添加了一个方法,去访问uri是无法访问到的。
四、使用devtool实现热部署:
1. 原理:就是存在两个class loader, 一个加载不会改变的类(第三方的jar), 一个加载会更改的类,所以,重新启动的时候,只会加载会更改的类,节约了加载的时间。
2. 使用流程:
1. 添加依赖: spring-boot-devtools, optional设置为true, scope设置为true。
2. 添加plugin:spring-boot-maven-plugin; configuration->fork: true; fork不设置为true,devtools不会生效。
五、Spring data JPA:
1. 使用流程:
1. 添加依赖: mysql 和 spring-data-jpa;
2. 在Application.yml文件中配置mysql;
3. 在Application.yml文件中配置jpa;
2.可以在Repository中,写需要的方法;也可以通过JPQL语句: 在方法上加上@Query("from cat where name=:name"); 若是name和方法的形参名称不一致的时候,需要在参数前加上@Param("name"), 这样才能正确的把形参的数据,对应到查询语句中。
六、Spring boot jdbcTemplate:
1. 使用流程:
1.添加依赖: spring-boot-starter-jdbc; 若是引入了spring-boot-starter-data-jpa, 则不需要引入此依赖。
2.声明Repository类: 注入jdbcTemplate;
在类中写自己需要的方法:
eg: public Demo getDemoById(long id) {
String sql = "select * from Demo where id = ?";
RowMapper<Demo > rowMapper = new BeanPropertyRowMappper<Demo>(Demo.class);
return jdbcTemplate.query(sql, rowMapper, id);
}
七、Spring Boot 全局捕捉异常:
1. 使用流程:
1. 新建一个类: GolbalDefaultExceptionHandler;
2. 在类上加上@ControllerAdvice;
3. 在方法上加上@ExceptionHandler(value=Exception.class), 若是返回的是一个String或是Json字符串,则需要在方法上添加一个@ResponseBody;
八、Spring Boot引入mybatis:
1. 使用流程:
1. 引入依赖:
1. mysql;
2. mybatis-spring-boot-starter;
3. pagehelper; version>1.1.0, 不然不支持拦截器。
2. 写DaoMapper接口:
1. 可以在方法上加@select("select * from Demo where name=#{name}")
public List<Demo> fetchDemoByName(String name);
3.需要注意的是,需要在Application类上添加@MapperScane("Mapper接口的包路径");
4.分页:
需要写一个类,注入到SpringIOC中;
@Configuration
public class mybatisConfiguration {
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties pro = new Properties();
pro.setProperty("offsetAsPageNum", "true");
pro.setProperty("rowBoundsWithCount", "true");
pro.setProperty("reasonable", "true");
pageHelper.setProperties(pro);
return pageHelper;
}
}
4.1使用的时候在访问DB之前:Pagehelper.startPage(pageNumber, pageSize);
5.保存数据的时候,返回主键信息:
1.在Mapper的方法上加上@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")