首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot+Mybatis+Redis二级缓存1

背景

Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果。

本篇文章将介绍如何使用Spring-Boot快速搭建一个Web应用,并且采用Mybatis作为我们的ORM框架。为了提升性能,我们将Redis作为Mybatis的二级缓存。为了测试我们的代码,我们编写了单元测试,并且用H2内存数据库来生成我们的测试数据。通过该项目,我们希望读者可以快速掌握现代化Java Web开发的技巧以及最佳实践。

环境

·开发环境:mac 10.11

·ide:Intellij 2017.1

·jdk:1.8

·Spring-Boot:1.5.3.RELEASE

·Redis:3.2.9

·Mysql:5.7

Spring-Boot

新建项目

首先,我们需要初始化我们的Spring-Boot工程。通过Intellij的Spring Initializer,新建一个Spring-Boot工程变得十分简单。首先我们在Intellij中选择New一个Project:

然后在选择依赖的界面,勾选Web、Mybatis、Redis、Mysql、H2:

新建工程成功之后,我们可以看到项目的初始结构如下图所示:

Spring Initializer已经帮我们自动生成了一个启动类——SpringBootMybatisWithRedisApplication。该类的代码十分简单:

@SpringBootApplication

public class SpringBootMybatisWithRedisApplication {

public static void main(String[] args) {

SpringApplication.run(SpringBootMybatisWithRedisApplication.class, args);

}

}

@SpringBootApplication注解表示启用Spring Boot的自动配置特性。好了,至此我们的项目骨架已经搭建成功,感兴趣的读者可以通过Intellij启动看看效果。

新建API接口

接下来,我们要编写Web API。假设我们的Web工程负责处理商家的产品(Product)。我们需要提供根据product id返回product信息的get接口和更新product信息的put接口。首先我们定义Product类,该类包括产品id,产品名称name以及价格price:

public class Product implements Serializable {

private long id;

private String name;

private long price;

// getters setters

}

然后我们需要定义Controller类。由于Spring Boot内部使用Spring MVC作为它的Web组件,所以我们可以通过注解的方式快速开发我们的接口类:

@RestController

@RequestMapping("/product")

public class ProductController {

@GetMapping("/")

public Product getProductInfo(

@PathVariable("id")

Long productId) {

// TODO

return null;

}

@PutMapping("/")

public Product updateProductInfo(

@PathVariable("id")

Long productId,

@RequestBody

Product newProduct) {

// TODO

return null;

}

}

我们简单介绍一下上述代码中所用到的注解的作用:

·@RestController:表示该类为Controller,并且提供Rest接口,即所有接口的值以Json格式返回。该注解其实是@Controller和@ResponseBody的组合注解,便于我们开发Rest API。

·@RequestMapping、@GetMapping、@PutMapping:表示接口的URL地址。标注在类上的@RequestMapping注解表示该类下的所有接口的URL都以/product开头。@GetMapping表示这是一个Get HTTP接口,@PutMapping表示这是一个Put HTTP接口。

·@PathVariable、@RequestBody:表示参数的映射关系。假设有个Get请求访问的是/product/123,那么该请求会由getProductInfo方法处理,其中URL里的123会被映射到productId中。同理,如果是Put请求的话,请求的body会被映射到newProduct对象中。

这里我们只定义了接口,实际的处理逻辑还未完成,因为product的信息都存在数据库中。接下来我们将在项目中集成mybatis,并且与数据库做交互。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111A069A300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券