7a27d003af5cbdb2d8bd6a858dc59597e85ba481
Gradle plugin - layer3gen
Generates the standard SPRING layered CRUD architecture starting from JPA entities.
- repositories
- services
- controller
##How to: #####1- clone this repository and run
gradlew install
#####2- configure build.gradle as follow:
buildscript {
dependencies {
classpath 'gae.piaz:layer3gen:0.0.6-SNAPSHOT'
}
repositories {
mavenCentral()
mavenLocal()
}
}
// ...
// ...
apply plugin: 'gae.piaz.layer3gen'
layer3gen {
configPath = 'src/main/resources/3layer-settings.yml'
}
#####3- Create 3layer-settings.yml in your resource folder. Example of 3layer-setting.yml :
projectPath: /home/tano/workspace_autogenerate/springboot-3layer-generator
outputDirectory : /src/main/java
options:
dtoLayer : true
inputPackages:
jpaEntities : com.gae.piaz.autogen.model
outputPackages:
repositories : com.gae.piaz.autogen.repositorygen
services: com.gae.piaz.autogen.servicegen
controllers: com.gae.piaz.autogen.controllergen
#####4- run
gradlew layer3gen
Example:
Checkout the example project present in /demo folder.
Repository generated example class:
@Repository
public interface BooksRepository extends JpaRepository<Books, java.lang.Integer> {
}
Service generated example class:
@Service
public class BooksService implements CrudService<Books,java.lang.Integer> {
@Autowired
private BooksRepository repository;
@Override
public Books create(Books entity) {
return repository.save(entity);
}
@Override
public Books update(Books entity) {
return repository.save(entity);
}
@Override
public Page<Books> read(Books entity, Pageable pageable) {
Example<Books> example = Example.of(entity);
return repository.findAll(example,pageable);
}
@Override
public Books readOne(java.lang.Integer primaryKey) {
return repository.getOne(primaryKey);
}
@Override
public void delete(java.lang.Integer primaryKey) {
repository.deleteById(primaryKey);
}
}
Controller generated example class:
@RestController
@RequestMapping("/books-dto/")
public class BooksControllerDTO implements CrudController<BooksDTO,java.lang.Integer>{
@Autowired
private BooksService service;
@Autowired
private BooksMapper mapper;
@Override
public ResponseEntity<BooksDTO> create(@RequestBody BooksDTO dto) {
Books entity = mapper.toEntity(dto);
entity = service.create(entity);
return ResponseEntity.ok(mapper.toDto(entity));
}
@Override
public ResponseEntity<BooksDTO> update(@RequestBody BooksDTO dto) {
Books entity = mapper.toEntity(dto);
entity = service.update(entity);
return ResponseEntity.ok(mapper.toDto(entity));
}
@Override
public ResponseEntity<Page<BooksDTO>> read(
@RequestBody BooksDTO dto,
@RequestParam("page") Integer page,
@RequestParam("size") Integer size) {
Pageable pageable = PageRequest.of(page,size);
Books entity = mapper.toEntity(dto);
Page<BooksDTO> pages = service.read(entity, pageable).map(mapper::toDto);
return ResponseEntity.ok(pages);
}
@Override
public ResponseEntity<BooksDTO> readOne(@PathVariable("id") java.lang.Integer primaryKey) {
Books entity = service.readOne(primaryKey);
return ResponseEntity.ok(mapper.toDto(entity));
}
@Override
public void delete(java.lang.Integer primaryKey) {
service.delete(primaryKey);
}
}
Description
Easy Auto Generating the SPRING 3 layer architecture ( Controller-Service-Repository) from JPA Entities
Readme
58 MiB
Languages
Java
82.8%
Fluent
15.1%
Kotlin
1.7%
FreeMarker
0.4%