springboot + tk.mybatis + swagger2的项目搭建

简介: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


猜你喜欢

转载自blog.csdn.net/qq_36758630/article/details/80926417