SpringBoot IDEA JPA简易教程

使用Spring Assistant创建1.5.18jar工程。

application.yml文件内容

 添加YAML Ansible support插件,文件后缀名yaml。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

创建Entity类Girl,会自动生成(更新)数据库中的表,名称就是girl

全部

package com.example;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
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;
    }
}
Girl类

创建接口GirlRepository

public interface GirlRepository extends JpaRepository<Girl,Integer> {
    //lookup by age
    public List<Girl> findByAge(Integer age);
}
GirlRepository

 Controller中使用GirlRepository对象来增删改查

package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class GirlController {
    @Autowired
    private GirlRepository girlRepository;


    @Autowired
    private GirlService girlService;

    //查询所有girl
    @GetMapping("/girls")
    public List<Girl> girlList() {
        return girlRepository.findAll();
    }
    //增加一个girl
    @GetMapping("/add")
    public Girl girlAdd(@RequestParam("cupSize") String cupSize,
                          @RequestParam("age") Integer age) {
        Girl girl=new Girl();
        girl.setAge(age);
        girl.setCupSize(cupSize);
        return girlRepository.save(girl);
    }
    //根据一个id查询girl
    @GetMapping("/girls/{id}")
    public Girl findTheGirl(@PathVariable("id") Integer id) {
        return girlRepository.findOne(id);
    }
    //根据id更新girl
    @GetMapping("/girls/update/{id}")
    public Girl updateTheGirl(@PathVariable("id") Integer id,@RequestParam("age") Integer age,
                              @RequestParam("cupSize") String cupSize) {
        Girl girl=new Girl();
        girl.setId(id);
        girl.setAge(age);
        girl.setCupSize(cupSize);

        return girlRepository.save(girl);
    }
    //根据id删除girl
    @GetMapping("/girls/remove/{id}")
    public void deleteGirl(@PathVariable("id") Integer id) {
        girlRepository.delete(id);
    }

    @GetMapping("/girls/age")
    public List<Girl> findByA(@RequestParam("age") Integer age) {
        return girlRepository.findByAge(age);
    }

    @GetMapping("girls/testTrans")
    public void testTrans() {
        girlService.insertTwo();
    }
}
controller类内容

 使用事务

业务类中的方法加上@Transactional即可

@Service
public class GirlService {

    @Autowired
    private GirlRepository girlRepository;
    @Transactional
    public void insertTwo() {
        Girl girlA=new Girl();
        girlA.setCupSize("F");
        girlA.setAge(17);
        girlRepository.save(girlA);

        int a=3/0;//发生异常,前面的数据库操作无效

        Girl girlB=new Girl();
        girlB.setAge(22);
        girlB.setCupSize("B");
        girlRepository.save(girlB);
    }
}
原文地址:https://www.cnblogs.com/legion/p/10059248.html