spring boot笔记

e442f5df728b4cf1b32cf308289aa5cdf68.jpg

1.属性注入:

 application.yml

server:
  port: 8081
  servlet:
    context-path: /girl
cupSize: B
age: 18
content: "cupSize: ${cupSize} ,age: ${age}"
@RestController
public class HelloController {

    @Value("${cupSize}")
    private String cupSize;

    @Value("${age}")
    private Integer age;

    @Value("${content}")
    private String content;

    @RequestMapping(value="/hello",method=RequestMethod.GET)
    public String say(){
        return "content:"+content;
    }

}

2.对象注入

server:
  port: 8081
  servlet:
    context-path: /girl
girl:
  cupSize: B
  age: 18
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {
    private String cupSize;

    private Integer age;

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
@RestController
public class HelloController {

    @Autowired
    private GirlProperties girlProperties;

    @RequestMapping(value="/hello",method=RequestMethod.GET)
    public String say(){
        return girlProperties.getCupSize();
    }
}

 

===生产、开发环境配置文件切换======

application.yml

spring:
  profiles:
    active: dev

application-dev.yml

server:
  port: 8081
girl:
  cupSize: F
  age: 18

application-prod.xml

server:
  port: 8081
girl:
  cupSize: B
  age: 18

无需修改配置文件切换方式:

 java -jar **.jar --spring.profiles.active=prod

10718ebcd3361ec70466ab4aa87dbbc4482.jpg

@RestController ==@Controller +@ResponseBody的作用

==单访问路径

@RequestMapping(value="/hello",method=RequestMethod.GET)
public String say(){
    return girlProperties.getCupSize();
}

==多访问路径

@RequestMapping(value={"/hello","/hi"},method=RequestMethod.GET)
public String say(){
    return girlProperties.getCupSize();
}

f5a10b7f1f3da0ab2d7f1e23c8eb630a9d4.jpg

例如:say?id=**

@RequestMapping(value="/hello",method=RequestMethod.GET)
public String say(@RequestParam("id")Integer id){
    return "id:"+id;
}

设置默认值,以及允许不填写

public String say(@RequestParam(value="id",required = false,defaultValue = "0")Integer id){
    return "id:"+id;
}

say/{id}

@RequestMapping(value="/hello/{id}",method=RequestMethod.GET)
public String say(@PathVariable("id") Integer id){
    return "id:"+id;
}

0f4f63fe0224b10a5b3f4ce1092f1a7e329.jpg

933197b11c6b61b78e434bcbb10f0bf264f.jpg

操作数据库前,加入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

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

配置文件

spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dbgirl
    username: root
    passowrd:
  jpa:
    hibernate:
      ddl-auto: update //create每次启动重新建表,craete-drop启动建表,停止删表 update有数据不删表 none什么都不做 validate验证表结构和类属性是否一致

 

92d1e19b3d64e0250cdc3c1dcf631911759.jpg

put操作注意,表单格式。

 

@RestController
public class GirlController {

    @Autowired
    private GirlRepository girlRepository;

    /**
     * 查询所有女生列表
     * @return
     */
    @GetMapping("/girls")
    public List<Girl> girlList(){
        return girlRepository.findAll();
    }

    /**
     * 添加一个女生
     * @param cupSize
     * @param age
     * @return
     */
    @PostMapping(value="/girls")
    public Girl girlAdd(@RequestParam("cupSize") String cupSize,
                        @RequestParam("age") Integer age){
        Girl girl= new Girl();
        girl.setCupSize(cupSize);
        girl.setAge(age);

        return girlRepository.save(girl);
    }

    //查询一个女生
    @GetMapping(value = "/girls/{id}")
    public Girl girlFindOne(@PathVariable("id") Integer id) {
        return girlRepository.findById(id).get();
    }


    //更新
    @PutMapping(value="/girls/{id}")
    public Girl girlUpdate(@PathVariable("id") Integer id,
                           @RequestParam("cupSize") String cupSize,
                           @RequestParam("age") Integer age){
        Girl girl= new Girl();
        girl.setId(id);
        girl.setCupSize(cupSize);
        girl.setAge(age);
        return girlRepository.save(girl);
    }

    //删除
    @DeleteMapping(value="/girls/{id}")
    public void girDelete(@PathVariable("id") Integer id){
        girlRepository.deleteById(id);
    }

    //通过年龄查询女生列表
    @GetMapping(value="/girls/age")
    public List<Girl> girlListByAge(@PathVariable("age") Integer age){
        return girlRepository.findByAge(age);
    }

}
//类名,id的类型
public interface GirlRepository extends JpaRepository<Girl, Integer> {

    //通过年龄来查询
    public List<Girl> findByAge(Integer age);
}
@Entity //jsr303验证
public class Girl {
    @Id//主键
    @GeneratedValue //自增
    private Integer id;
    private String cupSize;
    private Integer age;

    //必须要有一个无参构造方法
    public Girl() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
package com.imooc.girl;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {
    private String cupSize;

    private Integer age;

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

事务:

不生效的情况检查

数据库表必须是innoDb引擎才行。

@Service
public class GirlService {

    @Autowired
    private GirlRepository girlRepository;

    @Transactional
    public void insertTwo(){
        try{
            Girl girlA=new Girl();
            girlA.setCupSize("A");
            girlA.setAge(18);
            girlRepository.save(girlA);

            Girl girlB=new Girl();
            girlB.setCupSize("BBB");
            girlB.setAge(19);
            girlRepository.save(girlB);
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

controller

@PostMapping(value="/girls/two")
public void girlTwo(){
    girlService.insertTwo();
}
spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dbgirl
    username: root
    passowrd:
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect

如果jpa创建的表格式不是innoDb,在配置文件中加入方言就OK了

转载于:https://my.oschina.net/popfei/blog/1844186

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值