SpringBoot学习笔记

一、SpringBoot介绍

SpringBoot使编码、配置、部署、监控变得简单

SpringBoot和SpringMVC的关系,SpringBoot是升级版,可以直接学习SpringBoot。

SpringBoot的特点,简化配置;下一代框架;微服务的入门微框架。SpringCloud

1.第一个SpringBoot程序 2.自定义属性配置 3.Controller的使用 4.spring-data-jpa(数据库) 5.事务管理

前置知识:1.利用maven构建项目 2.Spring注解 3.RESTful API 《项目管理利器maven》《Spring入门篇》

注意:Java、Maven等版本保持一致

 

 二、第一个SpringBoot应用

Maven 阿里镜像,下载速度比较快

<mirror>

  <id>nexus-aliyun</id>

  <mirrorOf>*</mirrorOf>

  <name>Nexus aliyuan</name>

  <url>http://maven.aliyun.com/nexus/content/groups/public</url>

</mirror>

 

springBoot项目的三种启动方式:

    1.idea启动

    2.项目目录文件夹下,执行mvn spring-boot:run 命令

    3.先使用mvn install编译spring-boot项目,进入target目录,使用Java命令  Java -jar 生成的jar文件,进行启动

 

三、项目属性配置

1、yml文件可以替代properties文件,idea 对yml文件支持良好

2、属性配置,引用属性的内容

  @Value  单个配置,从配置文件读取参数

  @ConfigurationProperties 分组配置,把yml里面一组配置参数封装成一个类

  @Component  Spring的bean注入,向SpringBoot注册一个类

  @Autowired 注入一个类

3、可以多环境配置(例如:本地环境和生产环境)

  在项目配置文件application.yml中配置spring.profiles.active=prod,对应使用同目录下application-prod.yml配置文件,同理配置为dev,对应使用同目录下application-dev.yml配置文件

  用java -jar的方式带环境启动:java -jar target/springboot-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

 

四、Controller的使用

  @Controller 处理http请求

  @RestController Spring4之后新加的注解,返回json数据 相当于@ResponseBody配合@Controller

  @RequestMapping(value = {"/hello", "/hi"}, method = RequestMethod.GET) 两个url路径都可以访问同一个方法

   

  @PathVariable("id") 获取url中的数据,对应的是resultful形式中的{}中的属性,如:value="/say/{id}"

  @RequestParam("id") Integer MyId 获取请求参数中的值,对应的是网页访问地址中请求的属性

    如:地址栏中的  /say?id=100    这个注解可以让 MyId=100

    如果过地址为  /say?id=  则 MyId=null

    如果地址为     /say     的形式 ,则会报404

    供参考的一种使用方式 @RequestParam(value = "id", required = false, defaultValue = "0")

  @GetMapping 组合注解 

    GetMapping(value = “say”)相当于RequestMapping(value = “say”,method = RequestMethod.GET)

  

 五、数据库操作

  Spring-Data-Jpa

    JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等

  1、为了使用数据库,需要在pom.xml文件中,加入两个依赖:

    1)<dependency>

        <groupId>org.springframwork.boot</groupId>

        <artifactId>spring-boot-starter-data-jpa</artifactId>

      </dependency>

    2) <dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

     </dependency>

  2、在application.yml文件中作相应配置:

    1)mysql的相关配置

      spring.datasource.driver-class-name:com.mysql.jdbc.Driver

      spring.datasource.url:jdbc:mysql://127.0.0.1:3306/dbgirl

      spring.datasource.username:root

      spring.datasource.password:root

    2)jpa的配置

      spring.jpa.hibernate.ddl-auto:creat、update、none、creat-drop、validate

      creat每次运行时,都会创建新表(若有,删除原有的,在建新的),update不会删除原有的,保留改变的,更新,create-drop不运行时,删表,none什么也不作,validate验证类里面属性是否与表结构一致,不一致报错;

      spring.jpa.show-sql: true 显示sql语句

  3、新建数据库; 在main/imooc下新建Girl类,(和数据库对应)包括:

    1)类的前面有@Entity注解(表示此类对应数据库中的一个表)

    2)类中包含属性,其前有注解@Id @GeneratedValue可设为主键和自增字段(属性值对应表中的字段)

    3)有无参的构造方法,以及set和get方法;

 

可能出现的问题:

  1、在mysql高版本上配置数据库时,url不能简单的按照视频中写,需要按照下面的: url: jdbc:mysql://127.0.0.1:3306/sbs?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

  否则会出现下面的异常: SQLException: The server time zone value '�й���׼ʱ��' is unrecognized

  2、如果使用mysql版本比较高的需要在url这一行后面加上 ?characterEncoding=utf8&useSSL=true

  如下面所示: spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxx?characterEncoding=utf8&useSSL=true

 

使用Spring-Data-Jpa操作数据库

  1.创建Dao接口继承JpaRepository接口,该接口有泛型<T , ID>,T参数使用Model类型,ID参数使用Model主键的类型,每个Model对应一个Dao接口,Dao接口无须声明方法.

  2.创建Service以及ServiceImpl,在ServiceImpl中通过@Autowired注入Dao,ServiceImpl应用@Service注解标注

  3.使用Dao接口的方法操作数据库

    findAll() //查找所有对象,返回List<model>.

    findOne(ID id) //根据主键查找对象,返回Model.  //已作废,现使用findById(id).get();

    save(T model) //录入或修改对象,返回刚录入或修改的Model.

    delete(ID id) //删除对象.

注意:若不采用id查询,采用其他字段查询数据库,可在Dao接口中实现对应方法,方法名要按照规范,如:findByAge(Integer age)

  

 

注意:使用put方式提交请求,传递参数时不能使用form-data,要使用x-www-form-urlencoded传递

 

 六、事务管理

注意:mysql 表存储引擎为MyISAM ,不支持事务回滚,需要设置为InnoDB

   ALTER TABLE girl ENGINE=INNODB;

 在插入的方法前声明注解@Transactional

 

 

 

 

 

 

posted @ 2018-10-25 20:36  silence丶秋枫  阅读(193)  评论(0)    收藏  举报