Spring Boot 集成mybatis 分页实现以及单元测试

Spring Boot集成Mybatis的实现还是相当的简单的,我这里使用的数据库是MySQL,所以先引入MySQL的连接工具

 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>
        <!-- alibaba的druid数据库连接池 -->
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.21</version>
        </dependency>

引入mybatis集成工具包

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

这里注意下版本的问题,有时候会有些冲突的情况,可以调整下相关版本,特别是1.3.X和2.X的版本差距还是有的。

我们需要使用分页功能,所以引入分页工具包

<!-- mybatis分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>

分页使用代码如下:

        Integer page = params.getPage();
        Integer pageSize = params.getPageSize();
        //分页处理
        PageHelper.startPage(page, pageSize, true);
        List<User> classTimeList = userMapper.userList(params);
        PageInfo<User> pageInfo = new PageInfo<>(classTimeList);

 基本上这样配置完成之后,只要完成相关的yml文件配置,集成就完成了。那么我们一般集成完毕的时候,我们都希望能进行单元测试测试mybatis是否配置有问题。单独的Spring Boot的单元测试的配置,请参考:

Spring Boot单元测试

那么针对mybatis的单元测试有一点不一样的地方,首先POM文件引入:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>2.0.0</version>
            <scope>test</scope>
        </dependency>

然后在test的resources中新建application.yml文件

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:8306/wecode_saas_qc?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
    username: write_user
    password: write@codeus
#mybatis的配置
mybatis:
  type-handlers-package: com.clark.type.hanlder
  configuration:
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      map-underscore-to-camel-case: true

新建Spring Boot的启动类

@SpringBootApplication
public class Run {
    public static void main(String[] args) {
        SpringApplication.run(Run.class, args);
    }
}

新建测试类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Run.class)
@EnableAutoConfiguration
public class RunTests {

    @Resource
    private UserMapper userMapper;


    @Test
    public void test() throws Exception {

        User user = null;

        // 新增测试
        System.out.println("------------ 新增测试 ------------");
        user = new User();
        user.setNameBig("conanli");
        user.setTelephone(String.valueOf(Math.random()));
        System.out.println("insert: " + userMapper.insert(user));

        // 更新测试
        System.out.println("------------ 更新测试 ------------");
        user = new User();
        user.setId(1L);
        user.setTelephone("111111");
        System.out.println("update: " + userMapper.updateById(user));

        // 获取测试
        System.out.println("------------ 获取测试 ------------");
        System.out.println("user: " + userMapper.getById(1L));

        // 删除测试
        System.out.println("------------ 删除测试 ------------");
        System.out.println("delete: " + userMapper.deleteById(1L));

        // 存在测试
        System.out.println("------------ 存在测试 ------------");
        System.out.println("exist: " + userMapper.existById(1L));

        System.out.println("all"+userMapper.getAll());

    }
}

新建测试Mapper类,这里的BaseMapper请参考Mybatis修改

@Mapper
public interface UserMapper extends BaseMapper<User,Long> {


    @Select("select * from user ")
    List<User> getAll();
}

OK,配置完毕,运行测试类即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章