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

浙公网安备 33010602011771号