Spring boot学习笔记

 

一、基础知识:

    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")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值