点击上方 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 = @ResponseBody + @Controller
@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")
的方式。
当我一个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
新建接口,继承 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中不存在,可以自己使用扩展方法,写在接口中,调用即可。但是要求方法名要规范。