Skip to content

Commit

Permalink
feat: added mybatis-plus for mysql
Browse files Browse the repository at this point in the history
  • Loading branch information
realpdai committed Mar 20, 2022
1 parent 6fadf7f commit e86fbb0
Show file tree
Hide file tree
Showing 113 changed files with 5,127 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ spring:
url: jdbc:mysql://localhost:3306/test_db?useSSL=false&autoReconnect=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: bfXa4Pt2lUUScy8jakXf
password: admin

mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package tech.pdai.springboot.mysql57.mybatisplus.xml;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* @author pdai
*/
@SpringBootApplication
@MapperScan("tech.pdai.springboot.mysql57.mybatisplus.xml.dao")
public class App {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ spring:
username: root
password: bfXa4Pt2lUUScy8jakXf

mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
type-aliases-package: tech.pdai.springboot.mysql57.xml.entity
mybatis-plus:
configuration:
cache-enabled: true
use-generated-keys: true
Expand Down
59 changes: 55 additions & 4 deletions 221-springboot-demo-mysql8-jpa/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,68 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>tech-pdai-spring-demos</artifactId>
<groupId>tech.pdai</groupId>
<version>1.0-SNAPSHOT</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>

<modelVersion>4.0.0</modelVersion>
<groupId>tech.pdai</groupId>
<artifactId>221-springboot-demo-mysql8-jpa</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>com.github.wenhao</groupId>
<artifactId>jpa-spec</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<optional>true</optional>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package tech.pdai.springboot.mysql8.jpa;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* @author pdai
*/
@SpringBootApplication
public class App {

public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package tech.pdai.springboot.mysql8.jpa.config;

import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import springfox.documentation.builders.*;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.schema.ScalarType;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import tech.pdai.springboot.mysql8.jpa.constants.ResponseStatus;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
* swagger config for open api.
*
* @author pdai
*/
@Configuration
@EnableOpenApi
public class OpenApiConfig {

/**
* open api extension by knife4j.
*/
private final OpenApiExtensionResolver openApiExtensionResolver;

@Autowired
public OpenApiConfig(OpenApiExtensionResolver openApiExtensionResolver) {
this.openApiExtensionResolver = openApiExtensionResolver;
}

/**
* @return swagger config
*/
@Bean
public Docket openApi() {
String groupName = "Test Group";
return new Docket(DocumentationType.OAS_30)
.groupName(groupName)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build()
.globalRequestParameters(getGlobalRequestParameters())
.globalResponses(HttpMethod.GET, getGlobalResponse())
.extensions(openApiExtensionResolver.buildExtensions(groupName))
.extensions(openApiExtensionResolver.buildSettingExtensions());
}

/**
* @return global response code->description
*/
private List<Response> getGlobalResponse() {
return ResponseStatus.HTTP_STATUS_ALL.stream().map(
a -> new ResponseBuilder().code(a.getResponseCode()).description(a.getDescription()).build())
.collect(Collectors.toList());
}

/**
* @return global request parameters
*/
private List<RequestParameter> getGlobalRequestParameters() {
List<RequestParameter> parameters = new ArrayList<>();
parameters.add(new RequestParameterBuilder()
.name("AppKey")
.description("App Key")
.required(false)
.in(ParameterType.QUERY)
.query(q -> q.model(m -> m.scalarModel(ScalarType.STRING)))
.required(false)
.build());
return parameters;
}

/**
* @return api info
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("My API")
.description("test api")
.contact(new Contact("pdai", "http://pdai.tech", "suzhou.daipeng@gmail.com"))
.termsOfServiceUrl("http://xxxxxx.com/")
.version("1.0")
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package tech.pdai.springboot.mysql8.jpa.constants;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
* @author pdai
*/
@Getter
@AllArgsConstructor
public enum ResponseStatus {

SUCCESS("200", "success"),
FAIL("500", "failed"),

HTTP_STATUS_200("200", "ok"),
HTTP_STATUS_400("400", "request error"),
HTTP_STATUS_401("401", "no authentication"),
HTTP_STATUS_403("403", "no authorities"),
HTTP_STATUS_500("500", "server error");

public static final List<ResponseStatus> HTTP_STATUS_ALL = Collections.unmodifiableList(
Arrays.asList(HTTP_STATUS_200, HTTP_STATUS_400, HTTP_STATUS_401, HTTP_STATUS_403, HTTP_STATUS_500
));

/**
* response code
*/
private final String responseCode;

/**
* description.
*/
private final String description;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package tech.pdai.springboot.mysql8.jpa.controller;


import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*;
import tech.pdai.springboot.mysql8.jpa.entity.User;
import tech.pdai.springboot.mysql8.jpa.entity.query.UserQueryBean;
import tech.pdai.springboot.mysql8.jpa.entity.response.ResponseResult;
import tech.pdai.springboot.mysql8.jpa.service.IUserService;

import java.time.LocalDateTime;

/**
* @author pdai
*/
@RestController
@RequestMapping("/user")
public class UserController {

@Autowired
private IUserService userService;

/**
* @param user user param
* @return user
*/
@ApiOperation("Add/Edit User")
@PostMapping("add")
public ResponseResult<User> add(User user) {
if (user.getId()==null || !userService.exists(user.getId())) {
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
userService.save(user);
} else {
user.setUpdateTime(LocalDateTime.now());
userService.update(user);
}
return ResponseResult.success(userService.find(user.getId()));
}


/**
* @return user list
*/
@ApiOperation("Query User One")
@GetMapping("edit/{userId}")
public ResponseResult<User> edit(@PathVariable("userId") Long userId) {
return ResponseResult.success(userService.find(userId));
}

/**
* @return user list
*/
@ApiOperation("Query User Page")
@GetMapping("list")
public ResponseResult<Page<User>> list(@RequestParam int pageSize, @RequestParam int pageNumber) {
return ResponseResult.success(userService.findPage(UserQueryBean.builder().build(), PageRequest.of(pageNumber, pageSize)));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package tech.pdai.springboot.mysql8.jpa.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;
import tech.pdai.springboot.mysql8.jpa.entity.BaseEntity;

import java.io.Serializable;

/**
* @author pdai
*/
@NoRepositoryBean
public interface IBaseDao<T extends BaseEntity, I extends Serializable>
extends JpaRepository<T, I>, JpaSpecificationExecutor<T> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package tech.pdai.springboot.mysql8.jpa.dao;

import org.springframework.stereotype.Repository;
import tech.pdai.springboot.mysql8.jpa.entity.Role;

/**
* @author pdai
*/
@Repository
public interface IRoleDao extends IBaseDao<Role, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package tech.pdai.springboot.mysql8.jpa.dao;

import org.springframework.stereotype.Repository;
import tech.pdai.springboot.mysql8.jpa.entity.User;

/**
* @author pdai
*/
@Repository
public interface IUserDao extends IBaseDao<User, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package tech.pdai.springboot.mysql8.jpa.entity;

import java.io.Serializable;

/**
* @author pdai
*/
public interface BaseEntity extends Serializable {
}
Loading

0 comments on commit e86fbb0

Please sign in to comment.