SpringBoot搭建基于Spring+SpringMvc+Mybatis的REST服务

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: Maven Plugin管理通常,让你的Maven POM文件继承 spring-boot-starter-parent,并声明一个或多个 Starter POMs依赖即可。spring-boot-starter-parent1 2 org.

Maven Plugin管理

通常,让你的Maven POM文件继承 spring-boot-starter-parent,并声明一个或多个 Starter POMs依赖即可。

spring-boot-starter-parent
1 <parent>
2      <groupId>org.springframework.boot</groupId>
3      <artifactId>spring-boot-starter-parent</artifactId>
4      <version>1.5.6.RELEASE</version>
5 </parent>
View Code
其他 Starter POMs依赖
 1 <!-- spring-boot的web启动的jar包 -->
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-web</artifactId>
 5         </dependency>
 6         <dependency>
 7             <groupId>org.springframework.boot</groupId>
 8             <artifactId>spring-boot-starter-test</artifactId>
 9         </dependency>
10         <dependency>
11             <groupId>org.springframework.boot</groupId>
12             <artifactId>spring-boot-devtools</artifactId>
13             <optional>true</optional>
14             <scope>true</scope>
15         </dependency>
16         <dependency>
17             <groupId>org.springframework.boot</groupId>
18             <artifactId>spring-boot-starter-data-jpa</artifactId>
19         </dependency>
20         <dependency>
21             <groupId>org.springframework.boot</groupId>
22             <artifactId>spring-boot-starter-data-redis</artifactId>
23         </dependency>
24         <dependency>
25             <groupId>org.springframework.boot</groupId>
26             <artifactId>spring-boot-starter-aop</artifactId>
27         </dependency>
28         <!-- Spring Boot 集成MyBatis -->
29         <dependency>
30             <groupId>org.mybatis.spring.boot</groupId>
31             <artifactId>mybatis-spring-boot-starter</artifactId>
32             <version>1.3.1</version>
33         </dependency>
34         <dependency>
35             <groupId>com.github.pagehelper</groupId>
36             <artifactId>pagehelper-spring-boot-starter</artifactId>
37             <version>1.0.0</version>
38         </dependency>
View Code

application.properties编写

 1 # 驱动配置信息  
 2 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource  
 3 spring.datasource.url = jdbc:mysql://127.0.0.1:3306/goku_db
 4 spring.datasource.username = root
 5 spring.datasource.password = root
 6 spring.datasource.driverClassName = com.mysql.jdbc.Driver
 7 
 8 #连接池的配置信息  
 9 spring.datasource.initialSize=5  
10 spring.datasource.minIdle=5  
11 spring.datasource.maxActive=20  
12 spring.datasource.maxWait=60000  
13 spring.datasource.timeBetweenEvictionRunsMillis=60000  
14 spring.datasource.minEvictableIdleTimeMillis=300000  
15 spring.datasource.validationQuery=SELECT 1
16 spring.datasource.testWhileIdle=true  
17 spring.datasource.testOnBorrow=false  
18 spring.datasource.testOnReturn=false  
19 spring.datasource.poolPreparedStatements=true  
20 spring.datasource.maxPoolPreparedStatementPerConnectionSize=20  
21 spring.datasource.filters=stat,wall,log4j  
22 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
23 
24 # mybatis
25 mybatis.type-aliases-package=com.goku.webapi.model
26 mybatis.mapper-locations=classpath:mapping/**/*.xml
27 
28 # Mapper
29 mapper.mappers=com.goku.webapi.mapper
30 mapper.not-empty=false
31 mapper.identity=MYSQL
32 
33 #pagehelper
34 pagehelper.helperDialect=mysql
35 pagehelper.reasonable=true
36 pagehelper.supportMethodsArguments=true
37 pagehelper.params=count=countSql
38 
39 # Redis
40 spring.redis.database=0
41 spring.redis.host=127.0.0.1
42 spring.redis.port=6379
43 spring.redis.password=
44 spring.redis.pool.max-active=8
45 spring.redis.pool.max-wait=-1
46 spring.redis.pool.max-idle=8
47 spring.redis.pool.min-idle=0
48 spring.redis.timeout=0
View Code

config配置类编写

数据库配置

  1 ackage com.goku.webapi.config;
  2 
  3 import com.alibaba.druid.pool.DruidDataSource;
  4 import org.apache.ibatis.session.SqlSessionFactory;
  5 import org.mybatis.spring.SqlSessionFactoryBean;
  6 import org.slf4j.Logger;
  7 import org.slf4j.LoggerFactory;
  8 import org.springframework.beans.factory.annotation.Qualifier;
  9 import org.springframework.beans.factory.annotation.Value;
 10 import org.springframework.context.annotation.Bean;
 11 import org.springframework.context.annotation.Configuration;
 12 import org.springframework.context.annotation.Primary;
 13 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 14 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 15 
 16 import java.sql.SQLException;
 17 import javax.sql.DataSource;
 18 
 19 /**
 20  * Created by nbfujx on 2017/10/19.
 21  */
 22 @Configuration
 23 public class DruidDataBaseConfig {
 24 
 25     private Logger logger = LoggerFactory.getLogger(DruidDataBaseConfig.class);
 26 
 27     @Value("${spring.datasource.url}")
 28     private String dbUrl;
 29 
 30     @Value("${spring.datasource.username}")
 31     private String username;
 32 
 33     @Value("${spring.datasource.password}")
 34     private String password;
 35 
 36     @Value("${spring.datasource.driverClassName}")
 37     private String driverClassName;
 38 
 39     @Value("${spring.datasource.initialSize}")
 40     private int initialSize;
 41 
 42     @Value("${spring.datasource.minIdle}")
 43     private int minIdle;
 44 
 45     @Value("${spring.datasource.maxActive}")
 46     private int maxActive;
 47 
 48     @Value("${spring.datasource.maxWait}")
 49     private int maxWait;
 50 
 51     @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
 52     private int timeBetweenEvictionRunsMillis;
 53 
 54     @Value("${spring.datasource.minEvictableIdleTimeMillis}")
 55     private int minEvictableIdleTimeMillis;
 56 
 57     @Value("${spring.datasource.validationQuery}")
 58     private String validationQuery;
 59 
 60     @Value("${spring.datasource.testWhileIdle}")
 61     private boolean testWhileIdle;
 62 
 63     @Value("${spring.datasource.testOnBorrow}")
 64     private boolean testOnBorrow;
 65 
 66     @Value("${spring.datasource.testOnReturn}")
 67     private boolean testOnReturn;
 68 
 69     @Value("${spring.datasource.poolPreparedStatements}")
 70     private boolean poolPreparedStatements;
 71 
 72     @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
 73     private int maxPoolPreparedStatementPerConnectionSize;
 74 
 75     @Value("${spring.datasource.filters}")
 76     private String filters;
 77 
 78     @Value("{spring.datasource.connectionProperties}")
 79     private String connectionProperties;
 80 
 81     @Bean     //声明其为Bean实例
 82     @Primary  //在同样的DataSource中,首先使用被标注的DataSource
 83     public DataSource dataSource(){
 84         DruidDataSource datasource = new DruidDataSource();
 85 
 86         datasource.setUrl(this.dbUrl);
 87         datasource.setUsername(username);
 88         datasource.setPassword(password);
 89         datasource.setDriverClassName(driverClassName);
 90 
 91         //configuration
 92         datasource.setInitialSize(initialSize);
 93         datasource.setMinIdle(minIdle);
 94         datasource.setMaxActive(maxActive);
 95         datasource.setMaxWait(maxWait);
 96         datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
 97         datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
 98         datasource.setValidationQuery(validationQuery);
 99         datasource.setTestWhileIdle(testWhileIdle);
100         datasource.setTestOnBorrow(testOnBorrow);
101         datasource.setTestOnReturn(testOnReturn);
102         datasource.setPoolPreparedStatements(poolPreparedStatements);
103         datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
104         try {
105             datasource.setFilters(filters);
106         } catch (SQLException e) {
107             logger.error("druid configuration initialization filter", e);
108         }
109         datasource.setConnectionProperties(connectionProperties);
110 
111         return datasource;
112     }
113 
114     @Bean
115     @Primary
116     //配置事物管理
117     public DataSourceTransactionManager masterTransactionManager(){
118         return new DataSourceTransactionManager(dataSource());
119     }
120 }
View Code

redis配置

 1 package com.goku.webapi.config;
 2 
 3 import org.springframework.beans.factory.annotation.Value;
 4 import org.springframework.cache.CacheManager;
 5 import org.springframework.cache.annotation.CachingConfigurerSupport;
 6 import org.springframework.cache.annotation.EnableCaching;
 7 import org.springframework.context.annotation.Bean;
 8 import org.springframework.context.annotation.Configuration;
 9 import org.springframework.data.redis.cache.RedisCacheManager;
10 import org.springframework.data.redis.connection.RedisConnectionFactory;
11 import org.springframework.data.redis.core.RedisTemplate;
12 import org.springframework.data.redis.core.StringRedisTemplate;
13 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
14 
15 import com.fasterxml.jackson.annotation.JsonAutoDetect;
16 import com.fasterxml.jackson.annotation.PropertyAccessor;
17 import com.fasterxml.jackson.databind.ObjectMapper;
18 
19 /**
20  * Created by nbfujx on 2017/10/19.
21  */
22 @Configuration
23 @EnableCaching
24 public class RedisCacheConfig  extends CachingConfigurerSupport {
25 
26     @Value("${spring.redis.host}")
27     private String host;
28     @Value("${spring.redis.port}")
29     private int port;
30     @Value("${spring.redis.timeout}")
31     private int timeout;
32 
33     //缓存管理器
34     @Bean
35     public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
36         RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
37         //设置缓存过期时间
38         cacheManager.setDefaultExpiration(10000);
39         return cacheManager;
40     }
41 
42     @Bean
43     public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory){
44         StringRedisTemplate template = new StringRedisTemplate(factory);
45         setSerializer(template);//设置序列化工具
46         template.afterPropertiesSet();
47         return template;
48     }
49 
50     private void setSerializer(StringRedisTemplate template){
51         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
52         ObjectMapper om = new ObjectMapper();
53         om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
54         om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
55         jackson2JsonRedisSerializer.setObjectMapper(om);
56         template.setValueSerializer(jackson2JsonRedisSerializer);
57     }
58 
59 }
View Code

SpringApplication启动类编写

 1 package com.goku.webapi;
 2 
 3 import org.mybatis.spring.annotation.MapperScan;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 import org.springframework.boot.web.servlet.ServletComponentScan;
 7 import org.springframework.context.annotation.ComponentScan;
 8 
 9 /**
10  * Created by nbfujx on 2017/10/19.
11  */
12 // Spring Boot 应用的标识
13 @SpringBootApplication
14 @ServletComponentScan
15 @MapperScan("com.goku.webapi.mapper")
16 public class WebapiApplication {
17 
18     public static void main(String[] args) {
19         // 程序启动入口
20         // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
21         SpringApplication.run(WebapiApplication.class,args);
22     }
23 }
View Code

 编写其他相关业务类

model,mapper,service,controller

运行启动程序

查看运行效果

 查看druid数据源监控

 

GITHUB

github :https://github.com/nbfujx/learn-java-demo/tree/master/Goku.WebService.Simple.Single

 

目录
相关文章
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
12162 63
|
2月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
6月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1026 1
Spring boot 使用mybatis generator 自动生成代码插件
|
5月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
157 0
|
5月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
531 0
|
9月前
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
6183 7
|
11月前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
555 29
|
10月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
632 7
|
9月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
706 0