Как мне скопировать таблицу базы данных в эквивалентный класс java bean, который можно использовать в api весенней загрузки? - PullRequest
0 голосов
/ 09 марта 2020

Имя моей базы данных: продавец , в котором есть столбцы продавец_ид (PK) (автоинкремент), имя_продавца , seller_email et c .. Вот java класс бобов ПродавецБоб

public class SellerBean {

    private Integer sellerId;
    private String sellerName;
    private String sellerEmail;
    ....

    //Constructor & Getters-Setters

}

Я создал метод остальные API для регистрации продавца и использовал Swagger для документации API

@RestController
public class SellerRestController {

    @Autowired
    SellerService sellerService;

    @RequestMapping(value="seller/register",method = RequestMethod.POST)
    public ResponseEntity<SellerBean> registerSeller(@RequestBody SellerBean sellerBean){
        SellerBean seller = sellerService.registerSeller(sellerBean);
        return new ResponseEntity<>(seller,HttpStatus.OK);
    }
}

Здесь проблема заключается в том, что, когда я проверяю этот метод через пользовательский интерфейс Swagger этот метод запрашивает json, который содержит все поля SellerBean, но я не хочу, чтобы продавецId (PK) (AI) запрашивался (или вводился пользователем) Есть ли способ ограничить какое-либо поле боба, которое нужно запросить (или ввести)? (Я должен сохранить этот sellerId в SellerBean, потому что через него я выполнил все операции CRUD)

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете сделать это с помощью JPA.

Вот небольшой пример:

Сначала вам нужно создать свою сущность, которая является «зеркалом» вашей таблицы базы данных:

@Entity(name = "Seller")
@Table(name = "SELLER") // your table name
public class Seller {
    @Id
    @Column(name = "id") // your column name
    private Long id;

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

    @Column(name = "email")
    private String sellerEmail;

    ...
}

Затем вы можете использовать интерфейс JpaReporitory и CrudRepository, который будет делать то, что вы хотите:

@Repository
public interface Repository<Seller> extends JpaRepository<Seller, Long> {
}

Тогда DAO:

public class SellerDaoImpl implements SellerDao {

    SellerRepository repository;

    public SellerDaoImpl(SellerRepository repository) {
        this.repository = repository;
    }

    @Override
    @Transactional
    public Seller create(Seller toCreate) {
        return this.repository.save(toCreate);
    }
}

Ваш сервис должен выглядеть следующим образом:

public SellerServiceImpl implements SellerService {

    SellerMapper mapper;
    SellerDao dao;

    public SellerServiceImpl(SellerMapper mapper, SellerDao dao) {
        this.mapper = mapper;
        this.dao = dao;
    }

    @Override
    @Transactional
    public SellerDto registerSeller(SellerDto toRegister) {
        Seller entity = this.mapper.mapDto(toRegister);
        return this.mapper.mapEntity(this.dao.create(entity));
    }
}

Ваш DTO (в основном ваш продавецBean):

public class SellerDto {
   private String sellerName;
   private String sellerEmail;
   ...
}

И ваш маппер:

public class SellerMapper {
    public SellerDto mapEntity(Seller entity) {
        if (entity == null) {
            return null;
        }
        SellerDto dto = new SellerDto();
        dto.setSellerName(entity.getSellerName());
        dto.setSellerEmail(entity.getSellerEmail());
        ...
        return dto;
    }

    public Seller mapDto(SellerDto dto) {
        if (dto == null) {
            return null;
        }
        Seller entity = new Seller();
        entity.setSellerName(dto.getSellerName());
        entity.setSellerEmail(dto.getSellerEmail());
        ...
        return entity;
    }
}

Не забудьте о конфигурации Бина:

@Configuration
@EnableJpaRepositories(basePackageClasses = SellerRepository.class)
@EntityScan(basePackageClasses = SellerConfiguration.class)
public class SellerConfiguration {
    @Bean
    public SellerModelMapper sellerModelMapper() {
        return new SellerModelMapper();
    }

    @Bean
    public SellerDao sellerDao(SellerRepository repository) {
        return new SellerDao(repository);
    }

    @Bean
    public SellerService sellerService(SellerMapper mapper, SellerDao dao) {
        return new SellerService(mapper, dao);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...