Gaetano Piazzolla 7a27d003af updated readme
2020-10-28 15:48:06 +01:00
2020-10-28 15:38:33 +01:00
2020-10-28 15:38:33 +01:00
2020-10-26 19:16:30 +01:00
2020-10-28 15:38:33 +01:00
2020-10-26 19:16:30 +01:00
2020-10-28 15:48:06 +01:00
2020-10-28 15:38:33 +01:00

Gradle plugin - layer3gen

Generates the standard SPRING layered CRUD architecture starting from JPA entities.

  1. repositories
  2. services
  3. 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%