1 .数据库用的是mysql 数据库,项目整体结构如下,项目中Hystrix和Eureka可以看看,新手不晓得怎么上传项目文件 研究下后续给补上
2.用的maven 这里贴出maven 的pom配置
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 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">
<modelVersion>4.0.0</modelVersion>
<groupId>southernfund</groupId>
<artifactId>ws</artifactId>
<version>1.1</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>biz.paluch.logging</groupId>
<artifactId>logstash-gelf</artifactId>
<version>1.11.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>jdbctemplatetool</artifactId>
<version>1.0.4-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix</artifactId>
<version>1.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.nf.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
3.Controller ( ApiOperation 注解是 swagger 的注解更多注解请自行查询)
@RestController
@RequestMapping("/user")
public class UserController {
Logger logger= Logger.getLogger(UserController.class);
@Autowired
private Userepository userepository;
/**
* 查询所有列表
* @return
*/
@RequestMapping(value="/UserList",method=RequestMethod.GET)
@ApiOperation(value="获取所有的列表",notes="不需要传递参数")
public List<Users> UserList(){
logger.info("userList");
return userepository.findAll();
}
/**
* 增加一个用户数据
* @param users
* @param bindingResult
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(value="/SaveUser",method=RequestMethod.POST)
@ApiOperation(value="添加一个用户",notes="标题")
@Transactional
public com.nf.entity.Result<Users> SaveUser(@Valid Users users,BindingResult bindingResult){
logger.info("SaveUser");
if(bindingResult.hasErrors()){
return ResultUtil.error(1, bindingResult.getFieldError().getDefaultMessage());
}
return ResultUtil.success(userepository.save(users));
}
/**
*
* 更新
* @param users
* @param bindingResult
* @return
*/
@RequestMapping(value="/userUpdate",method=RequestMethod.POST)
@ApiOperation(value="更新用户信息",notes="更新")
public Users UsersUpdate(@Valid Users users,BindingResult bindingResult){
logger.info("userUpdate----");
if(bindingResult.hasErrors()){
return users;
}
return userepository.save(users);
}
/**
* 删除用户信息
* @param id
* no Result
*/
@RequestMapping(value="/delteUser/{id}",method=RequestMethod.DELETE)
@ApiOperation(value="删除用户信息",notes="Delete")
public void UserDelete(@PathVariable("id") final Integer id) {
userepository.delete(id);
}
@ApiOperation(value="根据姓名查找!",notes="就是查询姓名!",code=1,produces="2")
@RequestMapping(value="/findByname/{name}",method=RequestMethod.GET)
public List<Users> findByName(@PathVariable("name") final String name){
return userepository.findByAddressLike(name);
}
}
4.实体类
@Entity
public class Users {
@Id
@GeneratedValue
private Integer id;
private String name;
@NotBlank(message="性别必填")
private String sex;
@NotBlank(message="地址必填")
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Users [id=" + id + ", name=" + name + ", sex=" + sex + ", address=" + address + "]";
}
public Users(Integer id ,String sex,String name,String address){
this.id=id;
this.sex= sex;
this.name=name;
this.address=address;
}
public Users(){}
}
5.repository 类
public interface Userepository extends JpaRepository<Users,Integer> {
public List<Users> findByAddressLike(final String name);
}
6.util result 以及 resultUtil
public class ResultUtil {
public static Result success(Object object) {
Result result = new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(object);
return result;
}
public static Result success() {
return success(null);
}
public static Result error(Integer code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
Result 错误类
public class Result<T> {
/** 错误码. */
private Integer code;
/** 提示信息. */
private String msg;
/** 具体的内容. */
private T data;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
7.启动类
@EnableEurekaServer //服务发现
@EnableEurekaClient
@EnableHystrixDashboard //熔断器
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
8. swagger配置类 好用的api工具
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
//.pathMapping("/it/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.nf.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("做的一个用户CRDU的api。 - RESTful API Docs")
.description("正在开发中...")
.termsOfServiceUrl("http://localhost:8080/")
.version("1.0")
.build();
}
9。最后是数据库配置文件 yml 格式的
spring:
profiles: ## 可以删除
active: dev ##可以删除
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/user
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update ## 有多个参数 可自行调试:create ,create-update,none
show-sql: true