我正在将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);
}