commit daf971261219e25affab4053bf93da074d84b1d3 Author: mail_yanpeng@163.com Date: Mon Aug 24 17:45:37 2020 +0800 init & crud diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..84695dc --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..8365096 --- /dev/null +++ b/build.gradle @@ -0,0 +1,35 @@ +plugins { + id 'org.springframework.boot' version '2.3.3.RELEASE' + id 'io.spring.dependency-management' version '1.0.10.RELEASE' + id 'java' +} + +group = 'com.aiprose' +version = '0.0.1-SNAPSHOT' +sourceCompatibility = '1.8' + +repositories { + maven { url "http://maven.aliyun.com/nexus/content/groups/public/" } + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + developmentOnly 'org.springframework.boot:spring-boot-devtools' + runtimeOnly 'mysql:mysql-connector-java' + testImplementation('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } + + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + compile group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.3.2' + compile group: 'com.gitee.sunchenbin.mybatis.actable', name: 'mybatis-enhance-actable', version: '1.2.1.RELEASE' +// compile group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-starter', version: '2.0.4' +// implementation 'com.github.xiaoymin:knife4j-spring-boot-starter:2.0.2' + +} + +test { + useJUnitPlatform() +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..7eaabf4 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'mbp' diff --git a/src/main/java/com/aiprose/mbp/MbpApplication.java b/src/main/java/com/aiprose/mbp/MbpApplication.java new file mode 100644 index 0000000..ab9d2c0 --- /dev/null +++ b/src/main/java/com/aiprose/mbp/MbpApplication.java @@ -0,0 +1,24 @@ +package com.aiprose.mbp; + +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; + +//@MapperScan({"com.aiprose.mbp.mapper"}) +@MapperScan({"com.aiprose.mbp.mapper","com.gitee.sunchenbin.mybatis.actable.dao.*"}) +@ComponentScan({"com.gitee.sunchenbin.mybatis.actable.manager.*","com.aiprose.mbp.*"}) +@SpringBootApplication +public class MbpApplication { + + public static void main(String[] args) { + SpringApplication.run(MbpApplication.class, args); + } + + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } +} diff --git a/src/main/java/com/aiprose/mbp/conf/SwaggerConfiguration.java b/src/main/java/com/aiprose/mbp/conf/SwaggerConfiguration.java new file mode 100644 index 0000000..8d2251e --- /dev/null +++ b/src/main/java/com/aiprose/mbp/conf/SwaggerConfiguration.java @@ -0,0 +1,38 @@ +//package com.aiprose.mbp.conf; +// +//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.context.annotation.Import; +//import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration; +//import springfox.documentation.builders.ApiInfoBuilder; +//import springfox.documentation.builders.PathSelectors; +//import springfox.documentation.builders.RequestHandlerSelectors; +//import springfox.documentation.service.ApiInfo; +//import springfox.documentation.spi.DocumentationType; +//import springfox.documentation.spring.web.plugins.Docket; +//import springfox.documentation.swagger2.annotations.EnableSwagger2; +// +//@Configuration +//@EnableSwagger2 +//@EnableKnife4j +//@Import(BeanValidatorPluginsConfiguration.class) +//public class SwaggerConfiguration { +// @Bean +// public Docket createRestApi() { +// return new Docket(DocumentationType.SWAGGER_2) +// .apiInfo(apiInfo()) +// .select() +// .apis(RequestHandlerSelectors.basePackage("com.aiprose.mbp.controller")) +// .paths(PathSelectors.any()) +// .build(); +// } +// +// private ApiInfo apiInfo() { +// return new ApiInfoBuilder() +// .title("swagger-bootstrap-ui RESTful APIs") +// .description("swagger-bootstrap-ui") +// .version("1.0") +// .build(); +// } +//} \ No newline at end of file diff --git a/src/main/java/com/aiprose/mbp/conf/WebMvcConfig.java b/src/main/java/com/aiprose/mbp/conf/WebMvcConfig.java new file mode 100644 index 0000000..ea4178f --- /dev/null +++ b/src/main/java/com/aiprose/mbp/conf/WebMvcConfig.java @@ -0,0 +1,37 @@ +package com.aiprose.mbp.conf; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +@Configuration +public class WebMvcConfig extends WebMvcConfigurationSupport { + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowedMethods("GET", "POST","DELETE","OPTIONS") + .allowCredentials(false).maxAge(3600); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + + registry.addResourceHandler("/assets/**") + .addResourceLocations("classpath:/static/"); + + registry.addResourceHandler("doc.html") + .addResourceLocations("classpath:/META-INF/resources/"); + + registry.addResourceHandler("/**") + .addResourceLocations("classpath:/web/"); + + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/"); + + + super.addResourceHandlers(registry); + } + +} diff --git a/src/main/java/com/aiprose/mbp/controller/UserController.java b/src/main/java/com/aiprose/mbp/controller/UserController.java new file mode 100644 index 0000000..382282a --- /dev/null +++ b/src/main/java/com/aiprose/mbp/controller/UserController.java @@ -0,0 +1,27 @@ +package com.aiprose.mbp.controller; + +import com.aiprose.mbp.entity.User; +import com.aiprose.mbp.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class UserController { + @Autowired + private UserService userService; + + @GetMapping("save") + public void save() { + User user = new User(); + user.setName("nelson"); + userService.save(user); + } + + @GetMapping("list") + public List user() { + return userService.list(); + } +} diff --git a/src/main/java/com/aiprose/mbp/entity/SuperEntity.java b/src/main/java/com/aiprose/mbp/entity/SuperEntity.java new file mode 100644 index 0000000..8f9cb8a --- /dev/null +++ b/src/main/java/com/aiprose/mbp/entity/SuperEntity.java @@ -0,0 +1,33 @@ +package com.aiprose.mbp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.gitee.sunchenbin.mybatis.actable.annotation.Column; +import com.gitee.sunchenbin.mybatis.actable.annotation.IsAutoIncrement; +import com.gitee.sunchenbin.mybatis.actable.annotation.IsKey; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SuperEntity implements Serializable { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) //mybatis-plus主键注解 + @IsKey //actable主键注解 + @IsAutoIncrement //自增 + @Column //对应数据库字段,不配置name会直接采用属性名作为字段名 + private Long id; + /** + * 创建时间 + */ + @Column(name = "create_time",comment = "创建时间") // name指定数据库字段名,comment为备注 + private Date createTime = new Date(); + /** + * 最后修改时间 + */ + @Column(name = "update_time",comment = "最后修改时间") + private Date updateTime; +} diff --git a/src/main/java/com/aiprose/mbp/entity/User.java b/src/main/java/com/aiprose/mbp/entity/User.java new file mode 100644 index 0000000..39e1b30 --- /dev/null +++ b/src/main/java/com/aiprose/mbp/entity/User.java @@ -0,0 +1,26 @@ +package com.aiprose.mbp.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.gitee.sunchenbin.mybatis.actable.annotation.Column; +import com.gitee.sunchenbin.mybatis.actable.annotation.Table; +import lombok.Data; + +@Data +@Table(name="mbp_user") +@TableName("mbp_user") +public class User extends SuperEntity{ + @Column + private String name; + @Column + private Integer age; + @Column + private String email; + + public User(){ + + } + + public User(Long id,String name){ + this.name = name; + } +} \ No newline at end of file diff --git a/src/main/java/com/aiprose/mbp/mapper/UserMapper.java b/src/main/java/com/aiprose/mbp/mapper/UserMapper.java new file mode 100644 index 0000000..ad885c8 --- /dev/null +++ b/src/main/java/com/aiprose/mbp/mapper/UserMapper.java @@ -0,0 +1,15 @@ +package com.aiprose.mbp.mapper; + +import com.aiprose.mbp.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface UserMapper extends BaseMapper { + + @Select("select * from mbp_user") + public List queryList(); +} diff --git a/src/main/java/com/aiprose/mbp/service/UserService.java b/src/main/java/com/aiprose/mbp/service/UserService.java new file mode 100644 index 0000000..e0f4d77 --- /dev/null +++ b/src/main/java/com/aiprose/mbp/service/UserService.java @@ -0,0 +1,26 @@ +package com.aiprose.mbp.service; + +import com.aiprose.mbp.entity.User; +import com.aiprose.mbp.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserService { + + @Autowired + private UserMapper userMapper; + + public User save(User user){ + int insert = userMapper.insert(user); + return user; + } + + public List list(){ + List userList1 = userMapper.queryList(); + List userList = userMapper.selectList(null); + return userList; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..34200fe --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,23 @@ +server: + port: 8200 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://47.98.109.5:3309/mbp?characterEncoding=utf8&useSSL=false + username: root + password: trgis + hikari: + minimum-idle: 3 + maximum-pool-size: 10 + max-lifetime: 1800000 + connection-test-query: SELECT 1 +actable: + table: + auto: update + model: + pack: com.aiprose.mbp.entity + database: + type: mysql +mybatis-plus: + mapper-locations: classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml +# mapper-locations: classpath*:xxxxxx/*.xml,classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml \ No newline at end of file diff --git a/src/test/java/com/aiprose/mbp/MbpApplicationTests.java b/src/test/java/com/aiprose/mbp/MbpApplicationTests.java new file mode 100644 index 0000000..9578908 --- /dev/null +++ b/src/test/java/com/aiprose/mbp/MbpApplicationTests.java @@ -0,0 +1,13 @@ +package com.aiprose.mbp; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class MbpApplicationTests { + + @Test + void contextLoads() { + } + +}