一、前言

自从使用SpringBoot后,前言部分不需要再过多赘述Maven的坐标了,但是由于我们需要集成外部的工具(框架),所以可能还是需要引入坐标,有些在创建模块的时候可以使用图形化界面勾选,有些依旧只能在pom.xml中手动添加,本文需要的坐标如下:

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

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

二、整合Junit

正常创建一个SpringBoot的模块,这里先模拟一个Service类,在里面设计一个add方法:

@Service
public class UserService {

    public void add(){
        System.out.println("add...");
    }
}

编写测试类如下:

/**
 * userService的测试类
 */
//junit5
@ExtendWith(SpringExtension.class)
//junit4
//@RunWith(SpringRunner.class)

//@SpringBootTest(classes = SpringBootTestApplication.class)
@SpringBootTest//当测试类的包名和java中主包相同 或 测试类包名属于主包的子包,可以不用写(classes = SpringBootTestApplication.class)
class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void testAdd(){
        userService.add();
    }
}

注意:这里我演示的是Junit5的测试注解,如果需要使用Junit4,则需要导入Junit4的包,4和5的注解略有不同。

效果如下(不必关注警告,这是在提示未来版本可能会取消掉某个功能):

三、整合MyBatis

1.注解开发

首先先创建一个表,用于模拟各种操作(这里我们只演示查询操作)

同时需要一个User类来封装数据:

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

然后我们需要在yml配置文件中配置数据源:

# datasource
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///springboot
    password: 123456
    username: root

这里我们直接创建一个映射接口,使用注解开发,其中@Mapper表示扫描这个映射接口,自动生成这个接口的实现类,里面我们只写一个查询方法。

@Mapper
public interface UserMapper {

    @Select("select * from t_user")
    public List<User> findAll();
}

创建测试类:

@ExtendWith(SpringExtension.class)
@SpringBootTest
class SpringBootMybatisApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testFindAll1() {
        List<User> list = userMapper.findAll();
        System.out.println(list);
    }
}

效果如下:

2.xml配置

虽然注解相对方便,但是在多表操作的大项目中,使用xml配置映射文件会让可读性更高,并且许多老项目一直沿用的xml配置,所以依旧需要了解xml的编写方式。

首先是接口,我们这里重新写一个:

@Mapper
public interface UserXmlMapper {
    public List<User> findAll();
}

然后就是对应的xml映射文件:

<mapper namespace="com.yds.springbootmybatis.mapper.UserXmlMapper">
    <select id="findAll" resultType="user">
        select * from t_user
    </select>
</mapper>

同时,既然已经使用了xml配置,就必须配置核心配置文件,这里我们直接写在yml配置文件中,也就是说,我们在yml配置文件中配置了两个东西,一个是数据源,一个是核心配置文件(在核心配置文件中取了别名):

#mybatis
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml #mapper的映射文件路径
  type-aliases-package: com.yds.springbootmybatis.domain
  #vconfig-location: #指定mybatis的核心配置文件的

同时重写测试类:

@ExtendWith(SpringExtension.class)
@SpringBootTest
class SpringBootMybatisApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Autowired
    private UserXmlMapper userXmlMapper;

    @Test
    public void testFindAll1() {
        List<User> list = userMapper.findAll();
        System.out.println(list);
    }

    @Test
    public void testFindAll2() {
        List<User> list = userXmlMapper.findAll();
        System.out.println(list);
    }
}

效果如下:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐