查看原文
其他

零基础认识 Spring Boot

Lee宇斌 Java后端 2020-10-08

点击上方 Java后端,选择 设为星标

优质文章,及时送达

作者 | Lee宇斌

来源 | blog.csdn.net/qq_30258957

新建项目


New Project – Spring Initializr – 选择web

确定文件路径

选择版本,组件

选择路径进行保存,删除没用的文件

启动SpringBoot项目
运行自动生成的XXApplication类,其必须带有@SpringBootApplication注解,右键Run XX即可启动项目。 
idea在初次启动的时候需要加载许多东西,建议maven使用阿里云的仓库,加载完之后才会出现Run XX按钮。当出现此页面的时候,说明springBoot启动成功  
怎么编写一个Controller文件呢?添加类似Spring的注解,启动即可访问。(也可以先编译,通过命令启动)
由于代码补全快捷键冲突了,所以需要进行修改。
配置文件使用


新建的项目中,application.properties就是新建项目默认的配置文件。这里可以对访问端口和访问路径进行配置。

相似的,application.yml也是默认配置文件,其使用分组的格式,:之后必须加空格,子内容前面为tab键  
yml可以配置java代码中注入的值,直接写键:值,用@Value("${键}")的方式即可注入。 直接用${}就可以在xml中进行引用。
当配置文件需要频繁变换,怎么灵活切换呢?可以将其写成两个配置文件,而主配置文件只要选好要哪一个配置文件即可。 新建两个配置文件 application-dev.yml   &  application-prod.yml,在application.yml中指定调用哪一个配置文件:
调用dev后缀的配置文件。
注解的使用
@Component  & @ConfigurationProperties


一个个属性注入太麻烦了,有没有注入对象的方法呢?修改配置文件为组的形式,编写pojo对象映射,再将pojo对象注入


pojo对象,需要@Component定义Spring管理Bean,@ConfigurationProperties指定前缀内容。
@Component注解相当于:@Service,@Controller,@Repository,并下面类纳入进spring容器中管理。这样才能被下一层@Autowired注入该对象。
运行@SpringBootApplication,即可访问Controller的内容。 


@RestController

@RestController  =  @ResponseBody + @Controller  

@RequestMapping

@RequestMapping可以指定多个value:@RequestMapping(value={"/say","/hi"}) 。 
@RequestMapping的Get请求获取参数的方式:
方式一:PathVariable:访问地址中间参数传输:


url访问地址可以将id中间位置:http://localhost:8080/hello/233333/say


方式二:RequestParam:访问地址后面传值: 


url访问方式:http://localhost:8080/hello/say?id=110


添加默认值:(@RequestParam(value = "id", required = false, defaultValue = "0") Integer id) ,如何不传id,它就会默认为0。

@RequestMapping(value="/say",method = RequestMethod.GET)也可以写成GetMapping(value="/say")的方式。


@Transactional

当我一个Service的方法里有两条sql插入操作,怎么保证其同时执行成功或者同时执行失败?在方法上面添加@Transactional注解,即说明其为同个事务。
只有在innodb引擎下事务才能工作。所以需要在数据库中执行ALTER TABLE girl ENGINE=innodb命令。

数据库操作


创建表


要操作数据库,首先添加组件

pom.xml添加组件
application.yml配置数据库连接:
ddl-auto: create:每次都重新创建数据库,数据不保存,要保存得用update
show-sql: true:打印sql语句。
并且需要在mysql中创建对应的数据库。配置完上方的jpa之后,编写pojo对象,添加@Entity注解,标注id@Id,自增长@GeneratedValue,运行之后数据库就会自动生成对应表。ddl-auto: create配置将决定表是创建create还是更新update      


JPA实现增删改查


新建接口,继承JpaRepository<Girl, Integer>,注入接口,直接调用JpaRepository中的CRUD方法即可实现查询所有。    
新建接口


调用CRUD方法  

/**

    * 查询所有

    * @return

    */

   @GetMapping(value = "/girls")

   public List<Girl> girlList() {

       return girlRepository.findAll();

   }



   /**

    * 根据id查询

    * @param id

    * @return

    */

   @GetMapping(value = "/girlById/{id}")

   public Girl girlFindOne(@PathVariable("id") Integer id) {

       Optional<Girl> temp = girlRepository.findById(id);

       //从返回值中获取值

       return temp.get();

   }



   /**

    * 添加内容

    * @param age

    */

   @PostMapping(value = "/girlAdd")

   public Girl girlAdd(@RequestParam("size") String size, @RequestParam("age") Integer age) {

       Girl girl = new Girl();

       girl.setAge(age);

       girl.setSize(size);

       return girlRepository.save(girl);

   }



   /**

    * 更新

    */

   @PutMapping(value = "/moGirlById/{id}")

   public Girl girlUpdate(@PathVariable("id") Integer id, @RequestParam("age") Integer age,@RequestParam("size") String size) {

       Girl girl = new Girl();

       girl.setId(id);

       girl.setAge(age);

       girl.setSize(size);

       return girlRepository.save(girl);

   }



   /**

    * 删除

    */

   @DeleteMapping(value = "/delGirls/{id}")

   public void girlDelete(@PathVariable("id") Integer id) {

       Girl girl = new Girl();

       girl.setId(id);

       girlRepository.delete(girl);

   }


如果某些方法在JpaRepository中不存在,可以自己使用扩展方法,写在接口中,调用即可。但是要求方法名要规范。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存