简介:springboot + tk mybatis + swagger2 我感觉比较好用,方便后台开发并自测接口和与前端联调,这篇简单介绍一下如何简单搭建还有我踩过的坑。
1.建立一个springboot的项目
可以通过访问http://start.spring.io/快速建立一个springboot项目,也可以通过IDE自己建立。
2.加入tk.mybatis
建完springboot项目,只有一两个springboot的starter依赖,springboot提供了集成tk.mybatis的依赖包
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
最好是再在<build></build>中加入一个根据xml自动生成表映射对象和接口的插件,如下:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>src/main/resources/mybatis-generator/config.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
</dependencies>
</plugin>
其中configurationFile配置的路径就是你插件配置xml的路径,这边就不贴了,然后项目里怎么用呢?
tk.mybatis提供了一个mapper接口,里面封装了很多常用的方法,可以通过反射去生成sql并执行,我们用的话,只需要用自己根据插件对应表生成的mapper接口 继承tk.mybatis中接口就可以了,如下:
@Mapper
public interface SysUserMapper extends tk.mybatis.mapper.common.Mapper<SysUser> {
}
然后在service实现类中,注入你的mapper接口(此处例子是SysUserMapper),如下:
就可以直接使用操作对应表对象 的很多方法,也可以自己写一套二次封装的,根据自己需求来用。
用的时候遇到一个问题,开始没有在启动类中配置Mapper接口的扫描路径,是需要用tk包里的MapperScan来扫描,如下:
之后就可以正常运行了。
3.加上分页插件PageHelper配合使用
依赖如下:
<!-- 分页插件pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
使用的时候,配合tkmybatis,如下:
public PageInfo<SysUser> queryUserList(PageParamVo pageParamVo) {
PageHelper.startPage(pageParamVo.getStartPage(),pageParamVo.getPageSize());
Example example = new Example(SysUser.class);
example.orderBy("createTime").desc();
List<SysUser> sysUsers = userMapper.selectByExample(example);
return new PageInfo<>(sysUsers);
}
可以通过tk包里的Example对象来设置sql的条件,通过Pagehelper设置分页,然后调用继承的方法去查询,当然,除了Example也有很多其他常用的方法。
4.加入swagger2
swagger2可以用来可视化接口,里面不仅有java代码,还有静态资源,方便了我们自己测试或者在注释清楚的情况下和前端联调。
首先引入包:
<!--springboot和swagger2依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
然后加入swagger2配置类,注意要与启动类同级,
@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).enable(globalConfig.isSwaggerShow() ) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.springboot.btest.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("btest RESTful APIs") .description("springboot学习") .version("1.0") .build(); } }
configuration注解表示项目启动的时候 自动加载,EnableSwagger2的注解,表示允许使用swagger。
basePackage里填Controller包路径,
globalConfig.isSwaggerShow()
这一行可以在生产配置里配置false,表示在生产环境下关闭swagger,开发、测试环境可以配置true打开,将这行换成你的配置就行了,学习的话也可以暂时先去掉 enable这个配置。
这里面有个坑就是,我开始在启动类里配置了fastjson序列化,作为返回结果的处理,但是swagger用的是jackson作为json解析,一直会冲突,所以后来我把fastjson序列化配置去掉了,换成了jackson来处理返回结果,这里就不贴代码了,有兴趣的可以下方评论。
以上就是搭建过程,有很多细节漏掉了,如果有不清楚的地方可以下方评论一下哈。
转载请标明原文地址:https://mp.csdn.net/postedit/80926417