• spring boot 整合mybatis及使用Junit进行测试


    一. spring boot 整合mybatis

    1.整合思路:

      1.1 添加依赖 mybatis

      1.2 在配置文件中配置数据源信息

      1.3 编写pojo mapper接口 mapeer映射文件

      1.4手动配置mybatis的包扫描,在主启动类添加@MapperScan

        1.5 启动springboot服务器

    2.开始工程部署:

      2.1:添加依赖 mybatis

        

    复制代码
    <!--整合springboot与mybatis的整合-->
    <dependencies>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.1.1</version>
            </dependency>
    </dependencies>
     <!--将mapper下的mapper接口与mapper映射文件放在一个mapper包下所需要的依赖-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.*</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    复制代码

    2.2:在配置文件中配置数据源信息   application.yml

    复制代码
    #DB Configation  JPA Configation
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test
    //注意如果出现了无法连接数据库问题,在tx后面添加  ?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
        username: root
      password: root 
    jpa: database: MySQL
    generate-ddl: true
    show-sql: true
    复制代码

    2.3书写pojo实体类和对应的mapper接口及映射文件

     

     如果将接口和映射文件放在一个包下,那么会遇到:

    错误:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.offcn.mapper.UserMapper.getUserList

    解决方案:

    1:在resources目录下建立一个和mapper接口相同的目录结构,把mapper映射文件放进去

    2:如果想把mapper接口和mapper映射文件放在一起

    那么在pom.xml中添加如下配置

    复制代码
      <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.*</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
        </build>
    复制代码

     

    pojo实体类

    package com.wf.pojo;
    
    
    public class Muser {
    
        private Integer id;
        private String username;
        private String password;
        private String name;
      //此处添加set,get,构造方法以及重写toString
    }

     

     

    mapper接口:

    复制代码
    package com.wf.mapper;
    
    import com.wf.pojo.Muser;
    
    import java.util.List;
    
    public interface MuserMapper {
        List<Muser> getUserList();
    }
    复制代码

    mapeer映射文件:

    复制代码
    <?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.xhn.mapper.MuserMapper">
        <select id="getUserList" resultType="com.xhn.pojo.Muser">
        select * from user
      </select>
    </mapper>
    复制代码

    对应的controller中书写接口方法:

    复制代码
    package com.wf.controller;
    
    import com.wf.mapper.MuserMapper;
    import com.wf.pojo.Muser;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/user")
    public class UserController {
    
    
        @Autowired
        private MuserMapper muserMapper;
    
    
        //使用mybatis查询出所有数据
        @RequestMapping("/list1")
        public List<Muser> getUserList1(){
            return muserMapper.getUserList();
        }
    }
    复制代码

    2.4手动配置mybatis的包扫描,在主启动类添加@MapperScan

    复制代码
    package com.wf;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    //扫描mapper包下的所有mapper接口和映射文件
    @MapperScan(basePackages = "com.xhn.mapper")
    //添加启动类
    @SpringBootApplication
    public class StartApplication {
        public static void main(String[] args) {
            SpringApplication.run(StartApplication.class,args);
        }
    }
    复制代码

     2.5 启动springboot服务器

     二:使用Junit进行测试

    使用用法:

    1 添加依赖

            <!--测试junit-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>

     

    2 创建测试类

     

     

    3 在测试类上添加注解,并注入测试对象

    复制代码
    package com.wf;
    
    import com.wf.mapper.MuserMapper;
    import com.wf.pojo.Muser;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.List;
    
    @RunWith(SpringRunner.class)
    //加载主启动类
    @SpringBootTest(classes = StartApplication.class)
    public class AppTest {
    
        //依赖注入
        @Autowired
        private MuserMapper mapper;
    
        @Test
        public void test01(){
            //先获取所有数据
            List<Muser> userList = mapper.getUserList();
            for (Muser muser : userList) {
                System.out.println(muser);
            }
        }
    }
    复制代码

     


     

  • 相关阅读:
    C51学习笔记
    Keil C51与Keil ARM共存
    keil c51笔记
    css实现三角形
    微信小程序倒计时实现
    微信小程序公共组件的引用与控制
    mac上查找nginx安装位置
    charles抓取移动端app数据
    封装react组件——三级联动
    前端基础(http协议相关篇)
  • 原文地址:https://www.cnblogs.com/wufeng6/p/11802035.html
Copyright © 2020-2023  润新知