Spring Boot入门

Spring Boot入门:

使用IDEA创建Spring Boot 项目:

选择

勾选Web

生成项目结构:

例子:

package com.example.testboot;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String say(){
        return "hello";
    }
}

然后运行主程序:

package com.example.testboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@SpringBootApplication
public class TestbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestbootApplication.class, args);
    }
}

配置文件:

#端口号
server.port=8081    
#项目前缀
server.context-path=/test

也可以使用yml格式配置文件:

server:
  port: 8081
  cotent-path: /sd

 可以区分生产环境和开发环境的多环境配置。

Controller的使用:

注解:

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

例如:本来应该到success.jsp页面的,则其显示success.

2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。 3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

@GetMapping({"/hello","/hi"})
@PostMapping({"/hello","/hi"})
@RequestMapping({"/hello","/hi"})

可以使用集合的方式指定多个入口@RequestMapping也可以给Controller指定

@PathVaribale  获取url中的数据

//@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
    @GetMapping("/hello/{id}")
    public String sayHello(@PathVariable("id") Integer id){
        return "id:"+id;
    }

效果:

注意,这里

@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)

的效果等同于

@GetMapping("/hello/{id}")

同样,如果我们需要在url有多个参数需要获取,则如下代码所示来做就可以了。

   @RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
    public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
        return "id:"+id+" name:"+name;
    }

@RequestParam  获取请求参数的值

    @RequestMapping(value="/hello",method= RequestMethod.GET)
    public String sayHello(@RequestParam("id") Integer id){
        return "id:"+id;
    }
//@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
    @GetMapping("/hello")
    //required=false 表示url中可以不穿入id参数,此时就使用默认参数
    public String sayHello(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){
        return "id:"+id;
    }

如果是有多个参数的情况:

    @GetMapping("/hello")
    public String sayHello(@RequestParam("id") Integer id,@RequestParam("name") String name){
        return "id:"+id+ " name:"+name;
    }

@GetMapping

等同于@RequestMapping(method = RequestMethod.GET)

还有@PostMapping和@PutMapping等等

数据库操作:

配置yml文件:

server:
  port: 8090
  session-timeout: 30
  tomcat.max-threads: 0
  tomcat.uri-encoding: UTF-8

spring:
  datasource:
    url : jdbc:mysql://localhost:3306/mybill
    username : root
    password : root
    driverClassName : com.mysql.jdbc.Driver
  jpa:
    database : MYSQL
    show-sql : true
    hibernate:
      ddl-auto : update
      naming-strategy : org.hibernate.cfg.ImprovedNamingStrategy
    properties:
      hibernate:
        dialect : org.hibernate.dialect.MySQL5Dialect

配置实体类:

package com.example.testboot;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue
    private Integer id;

    private  String name;

    public User() {
    }

    public User(String name) {
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }
}

运行项目即可在数据库指定位置生成数据表。

数据库简单操作:

获取数据:

新建接口:

package com.example.testboot;

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User,Integer> {
}

Controller:

package com.example.testboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserRepository userRepository;

    /**
     * 返回用户列表
     * @return
     */
    @GetMapping("/getuser")
    public List<User> getUser(){
        return userRepository.findAll();
    }
}

添加的方法:

    /**
     * 添加
     * @param id
     * @param name
     * @return
     */
    @PostMapping("/getuser")
    public User addUser(@RequestParam("id")Integer id,@RequestParam("name")String name){
        User user=new User();
        user.setId(id);
        user.setName(name);
        return userRepository.save(user);
    }
    /**
     * 查询一个用户
     * @param id
     * @return
     */
    @GetMapping("/get/{id}")
    public User findUser(@PathVariable("id")Integer id){
        return userRepository.findOne(id);
    }
    /**
     * 更新一个用户
     * @param id
     * @param name
     * @return
     */
    @PutMapping("/put/{id}")
    public User putUser(@PathVariable("id")Integer id,@RequestParam("name")String name){
        User user=new User();
        user.setId(id);
        user.setName(name);
        return userRepository.save(user);
    }
    /**
     * 删除用户
     * @param id
     */
    @DeleteMapping("/del/{id}")
    public void delUser(@PathVariable("id")Integer id){
        userRepository.delete(id);
    }

 事务管理:

@Transactional
    @DeleteMapping("/del/{id}")
    public void delUser(@PathVariable("id")Integer id){
        userRepository.delete(id);
    }

通过注解 @Transactional

使得操作一个不完成时都不完成,除了查询方法都应添加事务。 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linyb极客之路

Spring Boot命令行运行器

CommandLineRunner是一个带有run方法的简单spring引导接口。Spring Boot启动后将自动调用实现CommandLineRunner接...

1863
来自专栏web编程技术分享

用SpringBoot搭建简单电商项目 01

8138
来自专栏Spring相关

不用web.xml,而使用java类配置SpringMVC

DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来...

1665
来自专栏Java呓语

# How to Install Jenkins on CentOS 7How to Install Jenkins on CentOS 7

Published on: Thu, May 19, 2016 at 4:54 am EST

982
来自专栏10km的专栏

Caffe: Could not find PROTOBUF Compiler(Profobuf 3.0 above)

在用cmake生成Caffe工程文件的时候,如果你使用Protobuf 3.0以上的版本,cmake可能会产生如下的报错: CMake Error at cm...

9136
来自专栏开发与安全

About Cache Coherence, Atomic Operation, Memory Ordering, Memory Barrier, Volatile

写这篇文章的起因是看到何登成博士发的一个微博问题,如下: ? 自己想不太明白,顺下找了他以前分享的一些资料和其他人的博客阅读,在这里做个笔记,内容主要来自何博的...

2850
来自专栏Dawnzhang的开发者手册

@Controller和@RestController的区别?

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalRes...

3713
来自专栏服务端技术杂谈

spring boot整合hessian

首先添加hessian依赖 <dependency> <groupId>com.caucho</groupId> <artifactId>he...

3754
来自专栏Google Dart

AOP切面编程一 原

863
来自专栏增长技术

Maven部署Web项目到Tomcat的配置

Maven自动部署实际上调的是Tomcat安装目录下的manager功能。而为了能正常访问http://localhost:8080/manager页面,我们需...

3693

扫码关注云+社区

领取腾讯云代金券