zoukankan      html  css  js  c++  java
  • SpringBoot系列之三_一个完整的MVC案例

      这一节让我们来做一个完整的案例。

      我们将使用MyBatis作为ORM框架,并以非常简单的方式来使用MyBatis,完成一个完整的MVC案例。

      此案例承接上一节,请先搭建好上一节案例。

      一、数据库准备

      我们使用MySQL作为数据存储,使用开发工具创建一个数据库demo,并在demo数据库中创建一张表user,创建语句如下:

    1.  
      CREATE TABLE `user` (
    2.  
      `id` int(11) NOT NULL COMMENT '主键',
    3.  
      `name` varchar(64) NOT NULL COMMENT '姓名',
    4.  
      `birthday` date DEFAULT NULL COMMENT '生日',
    5.  
      `address` varchar(256) DEFAULT NULL COMMENT '地址',
    6.  
      PRIMARY KEY (`id`)
    7.  
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      在这个表中写入一些测试数据,例如:

      二、编写项目代码

      1. 修改pom文件,添加两个依赖项:

      (1) mysql驱动包

      (2) mybatis支持(MyBatis公司为spring boot编写了一个mybatis-spring-boot-starter项目)

      pom文件内容如下:

    1.  
      <dependency>
    2.  
      <groupId>org.mybatis.spring.boot</groupId>
    3.  
      <artifactId>mybatis-spring-boot-starter</artifactId>
    4.  
      <version>1.3.0</version>
    5.  
      </dependency>
    6.  
       
    7.  
      <dependency>
    8.  
      <groupId>mysql</groupId>
    9.  
      <artifactId>mysql-connector-java</artifactId>
    10.  
      </dependency>

      2. 修改application.properties,内容如下:
    1.  
      spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8
    2.  
      spring.datasource.username=root
    3.  
      spring.datasource.password=root
    4.  
      spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    5.  
       
    6.  
      mybatis.typeAliasesPackage=com.hanhf.demo.domain

      此处配置了数据库URL、用户名、密码、驱动类,另外,还配置了实体类所在的包。

      3. 具体代码:

      先来看一下项目的包结构:

      这里,创建了三个包:

      web:存放控制器

      service:存放业务逻辑层对象

      domain:存放实体类和DAO类

      (1) User类(很普通的POJO类):

    1.  
      public class User {
    2.  
      private int id;
    3.  
      private String name;
    4.  
      private Date birthday;
    5.  
      private String address;
    6.  
       
    7.  
      // 构造方法
    8.  
       
    9.  
      public User() {
    10.  
      super();
    11.  
      }
    12.  
       
    13.  
      public User(int id, String name, Date birthday, String address) {
    14.  
      super();
    15.  
      this.id = id;
    16.  
      this.name = name;
    17.  
      this.birthday = birthday;
    18.  
      this.address = address;
    19.  
      }
    20.  
       
    21.  
      // getter & setter
    22.  
       
    23.  
      public int getId() {
    24.  
      return id;
    25.  
      }
    26.  
       
    27.  
      public void setId(int id) {
    28.  
      this.id = id;
    29.  
      }
    30.  
       
    31.  
      public String getName() {
    32.  
      return name;
    33.  
      }
    34.  
       
    35.  
      public void setName(String name) {
    36.  
      this.name = name;
    37.  
      }
    38.  
       
    39.  
      public Date getBirthday() {
    40.  
      return birthday;
    41.  
      }
    42.  
       
    43.  
      public void setBirthday(Date birthday) {
    44.  
      this.birthday = birthday;
    45.  
      }
    46.  
       
    47.  
      public String getAddress() {
    48.  
      return address;
    49.  
      }
    50.  
       
    51.  
      public void setAddress(String address) {
    52.  
      this.address = address;
    53.  
      }
    54.  
      }

      (2) UserMapper接口:

      MyBatis需要你为DAO提供一个接口,它称之为Mapper。然后具体的SQL语句可以注解在接口上,也可以单独保存在一个xml文件中,我这里使用的是前者,即将SQL语句注解在接口上。

      代码如下:

    1.  
      @Mapper
    2.  
      public interface UserMapper {
    3.  
      @Select("select * from user")
    4.  
      List<User> selectAll();
    5.  
      }

      增、删、改、查各有一个注解。接口前的@Mapper注解表示它是一个Mapper。


      (3) UserService类

      代码如下:

    1.  
      @Service
    2.  
      public class UserService {
    3.  
      @Autowired
    4.  
      private UserMapper userMapperp;
    5.  
       
    6.  
      public List<User> listAll() {
    7.  
      return userMapperp.selectAll();
    8.  
      }
    9.  
      }
      业务逻辑层的类需要加上@Service注解。

      (4) UserController类

      代码如下:

    1.  
      @RequestMapping("user")
    2.  
      @RestController
    3.  
      public class UserController {
    4.  
      @Autowired
    5.  
      private UserService userService;
    6.  
       
    7.  
      @GetMapping("/list/all")
    8.  
      public List<User> listAll() {
    9.  
      return userService.listAll();
    10.  
      }
    11.  
      }
      控制器类前可以加@Controller注解,也可以加@RestController注解,如果是前者,则控制器方法返回的是一个页面的代称,如果是后者,则控制器方法返回的是JSON数据。

      @RequestMapping用于指定请求的URL,它还有几个子注解:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping,分别表示请求的GET、POST、PUT、DELETE等操作,这是为RESTFUL应用设置的新注解。

      如果类上有@RequestMapper("user"),方法上又有@GetMapping("/list/all"),则要访问listAll()方法,请求的URL应为:http://localhost:8080/user/list/all。

      (5) 主应用程序

      最后,在主应用程序的类前加一个注解:

      @MapperScan("com.hanhf.demo.domain")

      这个注解表示扫描MyBatis的Mapper接口所在的包,找出所有加了@Mapper注解的接口。

      代码如下:

    1.  
      @SpringBootApplication
    2.  
      @MapperScan("com.hanhf.demo.domain")
    3.  
      public class DemoApplication {
    4.  
      public static void main(String[] args) {
    5.  
      SpringApplication.run(DemoApplication.class, args);
    6.  
      }
    7.  
      }

      至此,项目完成。

      启动程序,并输入网址:http://localhost:8080/user/list/all,出现网页:

     
  • 相关阅读:
    读书笔记·如何高效读懂一本书
    读书笔记·微习惯
    LittleTools之输出RenderTexture工具
    常用自制脚本(一):透明度统一修改
    LittleTool之批量修改材质
    曲面Shader
    温故而知新之镜头旋转
    LittleTools之网格输出为模型
    Unity给力插件之ShaderForge(三)
    vue的学习
  • 原文地址:https://www.cnblogs.com/yelanggu/p/10299627.html
Copyright © 2011-2022 走看看