SpringBoot框架已经成为越来越多企业的选择,约定大于配置的特性,使其可以快速开发,程序员也能很快上手,在与数据库交互方面,所使用的主流的两种ORM对象关系框架:hibernate,Mybatis,Mybatis因其对数据库操纵的灵活性更受青睐,MVC三层模式到前后端分离开发模式,Swagger架起了前后端的桥梁,更加直观的测试与展示接口。本文主要搭建一个纯净的springbootDemo框架,集成了Mybatis,Swagger,并创建了具有Restful规范的增删改查接口示例,关注微信公众号(菜鸟阿都)并回复:spingboot,即可获得源码。
-
初始化Springboot空项目
2. 项目源码说明
项目目录结构
创建数据库(Adu-Demo)及表(user)
create database adu-demo;
use adu-demo;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
集成Mybatis
pom.xml文件(添加mybatis依赖及数据库驱动)
<dependencies>
<!--mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
application.properties文件(配置数据库)
# mysql数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/Adu-Demo?useUnicode=true&characterEncoding=utf8
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.username=账号(默认:root)
spring.datasource.password=密码
# mapper.xml路径配置
mybatis.mapper-locations=classpath:mybatis/*.xml
Controller控制器(增删改查)
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
// 查询
@GetMapping("/find")
public List<User> findAll(){
return userService.findAll();
}
// 添加
@PostMapping("/insert")
public void Insert(@RequestBody User user){
userService.Insert(user);
}
// 更新
@PutMapping("/update")
public void Update(@RequestBody User user){
userService.Update(user);
}
// 删除
@DeleteMapping("/delete")
public void Delete(@RequestParam("id") int id){
userService.Delete(id);
}
}
Entity实体类
@Data是lombok插件的注解,使实体类自动生成构造方法,getter/setter方法,使代码更加简洁,开发更加高效,但同时需要注意:lombok也有其缺点
@Data
public class User {
public int id;
public String name;
}
Service服务类
service服务层一般在此处处理业务逻辑
@Service
public class UserService implements IUserService{
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll(){
return userMapper.findAll();
}
@Override
public void Insert(User user){
userMapper.Insert(user);
}
@Override
public void Update(User user){
userMapper.Update(user);
}
@Override
public void Delete(int id){
userMapper.Delete(id);
}
}
Mapper接口方法
public interface UserMapper {
List<User> findAll();
void Insert(User user);
void Update(User user);
void Delete(int id);
}
Mapper.xml映射文件:通过id与mapper.java文件映射
<?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.adu.springbootdemo.mapper.UserMapper">
<select id="findAll" resultType="com.adu.springbootdemo.domain.User">
SELECT * FROM user
</select>
<insert id="Insert" parameterType="com.adu.springbootdemo.domain.User" useGeneratedKeys="true" keyProperty="id">
insert into user(id, name) values(#{id}, #{name})
</insert>
<update id="Update" parameterType="com.adu.springbootdemo.domain.User">
update user set name=#{name} where id=#{id}
</update>
<delete id="Delete">
delete from user where id=#{id}
</delete>
</mapper>
集成Swagger
pom.xml文件(添加Swagger依赖)
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
swagger配置类
// swagger集成参考:http://www.hellojava.com/a/88686.html
@Configuration // 说明这是一个配置类
@EnableSwagger2// 该注解开启Swagger2的自动配置
public class SwaggerConfig { //随便的一个类名
@Bean
public Docket docker(){
// 构造函数传入初始化规范,这是swagger2规范
return new Docket(DocumentationType.SWAGGER_2)
//apiInfo:添加api详情信息,参数为ApiInfo类型的参数,这个参数包含了第二部分的所有信息比如标题、描述、版本之类的,开发中一般都会自定义这些信息
.apiInfo(apiInfo())
.groupName("都珍文")
//配置是否启用Swagger,如果是false,在浏览器将无法访问,默认是true
.enable(true)
.select()
//apis:添加过滤条件,
.apis(RequestHandlerSelectors.basePackage("com.adu.springbootdemo.controller"))
//paths:这里是控制哪些路径的api会被显示出来,比如下方的参数就是除了/user以外的其它路径都会生成api文档
.paths((String a) ->
!a.equals("/user"))
.build();
}
private ApiInfo apiInfo(){
Contact contact = new Contact("名字:name", "个人链接:http://xxx.xxx.com/", "邮箱:XXX");
return new ApiInfo(
"SpringBootDemo", // 标题
"springboot 整合mybatis、swagger,mysql数据库,并创建具有restful风格的增删改查示例", // 描述
"版本内容:v1.0", // 版本
"链接:http://terms.service.url/", // 组织链接
contact, // 联系人信息
"许可:Apach 2.0 ", // 许可
"许可链接:XXX", // 许可连接
new ArrayList<>()// 扩展
);
}
}
访问: http://localhost:8097/swagger-ui.html
关注微信公众号(菜鸟阿都)获得源码,回复:springboot