CRUD操作微服务Springboot

时间:2019-11-28 20:33:58

标签: java spring-boot jpa h2

我正在将Springboot与Eureka Server,H2和jpa一起使用。

我正在尝试通过数据库来实现微服务,在该数据库中我可以执行crud操作。

这应该是所有产品的数据库。通过CROUD操作,我应该添加或删除产品。属性包括:ID,名称和价格

当我启动本地微服务时,它没有建立任何数据库。 我应该意识到吗?

我两周前开始学习微服务架构,所以我必须了解很多东西。

Maven配置正确。

这是我的代码:

Applies.Properties存在的问题:spring.datasource.driverClassName = org.h2.Driver。 Intellij无法解析模式和类

spring.application.name=catalogo
server.port=8100
eureka.client.service-url.default-zone=http://localhost:8761/eureka

spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

# Enabling H2 Console
spring.h2.console.enabled=true

# Custom H2 Console URL
spring.h2.console.path=/h2-console

# create database schema from SQL files
spring.jpa.hibernate.ddl-auto=none

#Turn Statistics on and log SQL stmts
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.generate_statistics=false
#logging.level.org.hibernate.type=trace
#logging.level.org.hibernate.stat=debug

logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

服务

@Service
public class ProdottoService {

    @Autowired
   ProdottoRepository repository;

    public List<Prodotto> getAllProdotto()
    {
        List<Prodotto> prodottoList = repository.findAll();

        if(prodottoList.size() > 0) {
            return prodottoList;
        } else {
            return new ArrayList<Prodotto>();
        }
    }

    public Prodotto getProdottoById(Long id) throws RecordNotFoundException
    {
        Optional<Prodotto> prodotto = repository.findById(id);

        if(prodotto.isPresent()) {
            return prodotto.get();
        } else {
            throw new RecordNotFoundException("Non esiste un prodotto con questo id");
        }
    }

    public Prodotto createOrUpdateProdotto(Prodotto entity) throws RecordNotFoundException
    {
        Optional<Prodotto> prodotto = repository.findById(entity.getId());

        if(prodotto.isPresent())
        {
            Prodotto newEntity = prodotto.get();
            newEntity.setNomeProdotto(entity.getNomeProdotto());
            newEntity.setPrezzo(entity.getPrezzo());

            newEntity = repository.save(newEntity);

            return newEntity;
        } else {
            entity = repository.save(entity);

            return entity;
        }
    }

    public void deleteProdottoById(Long id) throws RecordNotFoundException
    {
        Optional<Prodotto> prodotto = repository.findById(id);

        if(prodotto.isPresent())
        {
            repository.deleteById(id);
        } else {
            throw new RecordNotFoundException("Non esiste un prodotto con questo id");
        }
    }
}

实体

@Entity
@Table(name ="PRODOTTO")
public class Prodotto {

    @Id
    @GeneratedValue
    private Long id;

    @Column (name = "nomeProdotto")
    private String nomeProdotto;

    @Column (name = "prezzo")
    private int prezzo;

    public Prodotto(){}
    public Prodotto(Long id, String nomeProdotto,int prezzo){
        super();
        this.id=id;
        this.nomeProdotto=nomeProdotto;
        this.prezzo=prezzo;
    }

    public Long getId() {
        return id;
    }

    public String getNomeProdotto() {
        return nomeProdotto;
    }

    public int getPrezzo() {
        return prezzo;
    }

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

    public void setNomeProdotto(String nomeProdotto) {
        this.nomeProdotto = nomeProdotto;
    }

    public void setPrezzo(int prezzo) {
        this.prezzo = prezzo;
    }

    @Override
    public String toString() {
        return "EmployeeEntity [id=" + id + ", nome prodotto=" +  nomeProdotto +
                ", prezzo=" + prezzo +  "]";
    }
}

控制器

@RestController
@RequestMapping("/prodotto")
public class ProdottoController {

    @Autowired
    ProdottoService service;

    @GetMapping
    public ResponseEntity<List<Prodotto>> getAllProdotto() {
        List<Prodotto> list = service.getAllProdotto();

        return new ResponseEntity<List<Prodotto>>(list, new HttpHeaders(), HttpStatus.OK);
    }

    @GetMapping("/{id}")
    public ResponseEntity<Prodotto> getProdottoById(@PathVariable("id") Long id)
            throws RecordNotFoundException {
        Prodotto entity = service.getProdottoById(id);

        return new ResponseEntity<Prodotto>(entity, new HttpHeaders(), HttpStatus.OK);
    }

    @PostMapping
    public ResponseEntity<Prodotto> createOrUpdateProdotto(Prodotto prodotto)
            throws RecordNotFoundException {
        Prodotto updated = service.createOrUpdateProdotto(prodotto);
        return new ResponseEntity<Prodotto>(updated, new HttpHeaders(), HttpStatus.OK);
    }

    @DeleteMapping("/{id}")
    public HttpStatus deleteEmployeeById(@PathVariable("id") Long id)
            throws RecordNotFoundException {
        service.deleteProdottoById(id);
        return HttpStatus.FORBIDDEN;
    }
/*
    @Autowired
    private Environment environment;

    @Autowired
    private ProdottoRepository repository;
@GetMapping("/valore-prezzo/from/{nomeProdotto}")
public Prodotto recuperaPrezzo(@PathVariable String nomeProdotto){
    Prodotto valore= repository.findByNomeProdotto(nomeProdotto);
    return  valore;
}
*/
    @RequestMapping("/ciao")
    String hello(){
        return "Hello world!";
    }



}

存储库

@Repository
public interface ProdottoRepository extends JpaRepository<Prodotto,Long> {

    Prodotto findByNomeProdotto(String nomeProdotto);
}

0 个答案:

没有答案