Skip to content

Commit 8cd88a1

Browse files
committed
add fast show #16
1 parent 494b101 commit 8cd88a1

File tree

16 files changed

+325
-78
lines changed

16 files changed

+325
-78
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
package com.codingapi.springboot.example.application.executor;
22

33
import com.codingapi.springboot.example.domain.entity.Demo;
4+
import com.codingapi.springboot.example.domain.repository.DemoRepository;
45
import com.codingapi.springboot.example.domain.service.DemoChangeService;
6+
import lombok.AllArgsConstructor;
57
import org.springframework.stereotype.Component;
68

79
@Component
10+
@AllArgsConstructor
811
public class DemoExecutor {
912

13+
private final DemoRepository demoRepository;
1014
public void swap(Demo demo1, Demo demo2) {
1115
DemoChangeService demoChangeService = new DemoChangeService(demo1,demo2);
1216
demoChangeService.swap();
1317
}
18+
19+
public void create(String name){
20+
Demo demo = new Demo(name);
21+
demoRepository.save(demo);
22+
}
1423
}

springboot-example/src/main/java/com/codingapi/springboot/example/insfrastructure/query/DemoQueryApi.java

Lines changed: 0 additions & 27 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.codingapi.springboot.example.insfrastructure.query;
2+
3+
import com.codingapi.springboot.example.insfrastructure.entity.DemoEntity;
4+
import com.codingapi.springboot.fastshow.annotation.FastController;
5+
import com.codingapi.springboot.fastshow.annotation.FastMapping;
6+
import org.springframework.web.bind.annotation.RequestMethod;
7+
import org.springframework.web.bind.annotation.RequestParam;
8+
9+
import java.util.List;
10+
11+
@FastController
12+
public interface FastDemoApi {
13+
14+
@FastMapping(method = RequestMethod.GET,mapping = "/open/fast/demo/findAll",hql = "select d from DemoEntity d where name = ?1")
15+
List<DemoEntity> findAll(@RequestParam("name") String name);
16+
17+
}

springboot-example/src/main/java/com/codingapi/springboot/example/insfrastructure/query/FastShowConfiguration.java

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.codingapi.springboot.example.ui.controller;
2+
3+
import com.codingapi.springboot.example.application.executor.DemoExecutor;
4+
import com.codingapi.springboot.framework.dto.response.Response;
5+
import lombok.AllArgsConstructor;
6+
import org.springframework.web.bind.annotation.GetMapping;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.bind.annotation.RequestParam;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
@RequestMapping("/open/demo")
13+
@AllArgsConstructor
14+
public class OpenController {
15+
16+
private final DemoExecutor executor;
17+
18+
@GetMapping("/save")
19+
public Response save(@RequestParam("name") String name){
20+
executor.create(name);
21+
return Response.buildSuccess();
22+
}
23+
}

springboot-starter-fastshow/pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@
2222
<groupId>org.springframework</groupId>
2323
<artifactId>spring-webmvc</artifactId>
2424
</dependency>
25+
26+
<dependency>
27+
<groupId>com.codingapi.springboot</groupId>
28+
<artifactId>springboot-starter</artifactId>
29+
</dependency>
30+
31+
<dependency>
32+
<groupId>org.springframework.boot</groupId>
33+
<artifactId>spring-boot-starter-data-jpa</artifactId>
34+
</dependency>
35+
2536
</dependencies>
2637

2738
</project>

springboot-starter-fastshow/src/main/java/com/codingapi/springboot/fastshow/FastShowConfiguration.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.codingapi.springboot.fastshow;
22

3+
import com.codingapi.springboot.fastshow.executor.JpaExecutor;
34
import com.codingapi.springboot.fastshow.mapping.MvcEndpointMapping;
5+
import com.codingapi.springboot.fastshow.registrar.MvcMappingRegistrar;
46
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
57
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
68
import org.springframework.context.annotation.Bean;
79
import org.springframework.context.annotation.Configuration;
810
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
911
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
1012

13+
import javax.persistence.EntityManager;
14+
1115
@Configuration
1216
@ConditionalOnClass(WebMvcConfigurer.class)
1317
public class FastShowConfiguration {
@@ -19,4 +23,16 @@ public MvcEndpointMapping mvcEndpointMapping(RequestMappingHandlerMapping handle
1923
return new MvcEndpointMapping(handlerMapping);
2024
}
2125

26+
@Bean(initMethod = "registerMvcMapping")
27+
@ConditionalOnMissingBean
28+
public MvcMappingRegistrar mappingRegistrar(MvcEndpointMapping mvcEndpointMapping,JpaExecutor jpaExecutor){
29+
return new MvcMappingRegistrar(mvcEndpointMapping,jpaExecutor);
30+
}
31+
32+
@Bean
33+
@ConditionalOnMissingBean
34+
public JpaExecutor jpaExecutor(EntityManager entityManager){
35+
return new JpaExecutor(entityManager);
36+
}
37+
2238
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.codingapi.springboot.fastshow.annotation;
2+
3+
import java.lang.annotation.*;
4+
5+
@Target(ElementType.TYPE)
6+
@Retention(RetentionPolicy.RUNTIME)
7+
@Documented
8+
public @interface FastController {
9+
10+
11+
12+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.codingapi.springboot.fastshow.annotation;
2+
3+
4+
import org.springframework.web.bind.annotation.RequestMethod;
5+
import org.springframework.web.bind.annotation.ResponseBody;
6+
7+
import java.lang.annotation.ElementType;
8+
import java.lang.annotation.Retention;
9+
import java.lang.annotation.RetentionPolicy;
10+
import java.lang.annotation.Target;
11+
12+
@Retention(RetentionPolicy.RUNTIME)
13+
@Target(ElementType.METHOD)
14+
@ResponseBody
15+
public @interface FastMapping {
16+
17+
String hql() default "";
18+
19+
RequestMethod method() default RequestMethod.GET;
20+
21+
22+
String mapping() default "";
23+
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.codingapi.springboot.fastshow.executor;
2+
3+
import lombok.AllArgsConstructor;
4+
import org.springframework.web.bind.annotation.ResponseBody;
5+
6+
import javax.persistence.EntityManager;
7+
import javax.persistence.Query;
8+
9+
@AllArgsConstructor
10+
public class JpaExecutor {
11+
12+
private final EntityManager entityManager;
13+
14+
@ResponseBody
15+
public Object execute(String jpaSql,Object[] args){
16+
Query query = entityManager.createQuery(jpaSql);
17+
if(args!=null) {
18+
for (int i = 0; i < args.length; i++) {
19+
query.setParameter(i+1,args[i]);
20+
}
21+
}
22+
return query.getResultList();
23+
}
24+
}

0 commit comments

Comments
 (0)