上一章中讲了关于SpringBoot单模块项目,多模块项目的搭建过程,那么这节就说下SpringBoot中常用好用的第三方技术。
一、jdbc连接池
1、导入jdbc需要的maven依赖包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2、application.yml 配置
##数据库连接配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
3、测试jdbc
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("/test")
public List<Map<String,Object>> test(){
List<Map<String, Object>> resultList = jdbcTemplate.queryForList("select * from test_user ");
return resultList;
}
结果如下:
[
{
"id": 1,
"name": "zhangsan",
"age": 22
},
{
"id": 2,
"name": "zhangsan2",
"age": 22
},
{
"id": 3,
"name": "zhangsan3",
"age": 22
}
]
二、mybatis
1、需要按照上面JDBC连接池配置连接池
2、添加pom依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
3、application.yml添加mybatis配置
mybatis:
## 添加mybatis中所有映射的mapper的xml文件
mapper-locations: classpath:mappers/*.xml
## 映射的实体类的包位置
type-aliases-package: com.springboot.mybatis.*
4、mapper.xml 写对应的sql语句
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.springboot.mybatis.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.springboot.mybatis.entitys.User">
<id column="id" jdbcType="INTEGER" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="age" jdbcType="INTEGER" property="age" />
</resultMap>
<select id="findById" resultMap="BaseResultMap" parameterType="integer">
select * from user where id = #{id}
</select>
<select id="findAll" resultMap="BaseResultMap" >
select * from user
</select>
</mapper>
5、mapper.java 接口文件
User findById(Integer id);
List<User> findAll();
6、调用mapper方法
@Autowired
private UserMapper userMapper;
@RequestMapping("/findById/{userId}")
public User findById(@PathVariable("userId") Integer userid){
return userMapper.findById(userid);
}
@RequestMapping("findAll")
public List<User> findAll(){
return userMapper.findAll();
}
7、测试结果
## findById 方法结果
{
"id": 0,
"name": "zhangsan",
"age": 10
}
## findAll 方法结果
[
{
"id": 0,
"name": "zhangsan",
"age": 10
},
{
"id": 0,
"name": "lisi",
"age": 15
}
]
三、阿里druid
1、maven 引入相关包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
2、application.yml 配置
druid:
web:
allow: ''
deny: ''
loginPassword: 123456
loginUsername: admin
resetEnable: false
配置说明:
allow:白名单,多个地址用逗号分开
deny:黑名单,多个地址用逗号分开
loginUsername:后台登录用户名
loginPassword:后台登录密码
resetEnable:是否可以重置数据源
3、druid 配置及自动加载
@Configuration
public class DruidConfig {
@Value("${spring.druid.web.allow}")
private String allow ;
@Value("${spring.druid.web.deny}")
private String deny ;
@Value("${spring.druid.web.loginUsername}")
private String loginUsername ;
@Value("${spring.druid.web.loginPassword}")
private String loginPassword ;
@Value("${spring.druid.web.resetEnable}")
private String resetEnable ;
@Bean
public ServletRegistrationBean druidServlet(){
// web监控配置
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
// 白名单,多个地址用逗号分开
servletRegistrationBean.addInitParameter("allow",allow);
// 黑名单,多个地址用逗号分开
servletRegistrationBean.addInitParameter("deny",deny);
// 后台登录用户名
servletRegistrationBean.addInitParameter("loginUsername",loginUsername);
// 后台登录密码
servletRegistrationBean.addInitParameter("loginPassword",loginPassword);
// 是否可以重置数据源
servletRegistrationBean.addInitParameter("resetEnable",resetEnable);
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
//所有请求进行监控处理
filterRegistrationBean.addUrlPatterns("/*");
//排除
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
return filterRegistrationBean;
}
}
4、访问druid
http://localhost/druid/index.html
输入application.yml配置文件中对应的用户名密码即可登录
四、Swagger API自动生成工具
1、引入对应maven依赖包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
2、增加config配置
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* 构建 api文档的详细信息函数
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("自动生成Swagger")
//描述
.description("接口文档")
//创建人
.contact(new Contact("zhangsan", "http://baidu.com", "zhangsan@mail.com"))
//版本号
.version("1.0")
.build();
}
}
最终效果与上面代码文字对应
3、controller对应写法
@RestController
@Api(tags = "首页API说明")
public class IndexController {
@ApiOperation(value = "首页",notes = "进入首页相关方法")
@GetMapping("/index")
public String index(){
return "this is index!";
}
@ApiOperation(value = "首页",notes = "进入首页相关方法")
@GetMapping("/index2")
public String index2(){
return "this is index!";
}
}
swagger注解
swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数
网友评论