spring整合Junit

一、术语解释

1、junit:单元测试框架,主要是白盒测试,用于在程序开发过程中测试某个功能

2、mybatis:简单理解就是,就是对连接数据的库一个封装,是一个持久层框架。可以简化连接数据库的步骤和加快开发

3、spring:Java轻量级的开发框架,以IOC和AOP为内核,可整合很多第三方框架,可快速开发

        3.1、IOC:控制反转,将创建对象的控制权转移到spring提供的IOC容器中

        3.2、AOP:面向切面编程,通过声明式方式灵活的进行事务的管理,提高开发效率和质量

二、注解解释

1、@Autowide:自动装配,IOC容器依据bean所依赖的资源在容器中查找并注入到bean中

2、@Bean:创建对象,在spring创建一个对象

3、@Component:就是实现bean的注入,并衍生出三个

        3.1、@Repository(实现dao访问) 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件

        3.2、@Service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理

        3.3、@Controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层

4、@Configuration :开启纯注解模式

5、 @ComponentScan({"dao","service"})  //扫描组件

6、 @PropertySource(value = {"classpath:jdbc.properties"},encoding = "utf-8") //引入数据源

7、 @Import({JdbcConfig.class,MybatisConfig.class}) //导入jdbcConfig

8、@Value("${jdbc.driver}"):注解从配置文件读取值的用法,也就是从jdbc.properties文件中获取值

9、@Select("select * from book") : 这是整合mybatis的效果,查询功能

10、@RunWith(value = SpringJUnit4ClassRunner.class):设定类运行器

11、 @ContextConfiguration(classes = SpringConfig.class):spring的配置类

12、@Test:测试,使用相应的方法可不放在main方法中直接运行,起到代码的测试作用

三、具体步骤

本部分内容由创建数据库到测试运行

1、创建数据库
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `isbn` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `bookName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `price` float(10, 2) NULL DEFAULT NULL,
  PRIMARY KEY (`isbn`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('1', '1', 1.00);

SET FOREIGN_KEY_CHECKS = 1;

2、创建实体类和数据库的数据保持一致  

package entity;

public class Book {

    private String isbn;
    private String bookName;
    private float price;

    @Override
    public String toString() {
        return "Book{" +
                "isbn='" + isbn + '\'' +
                ", bookName='" + bookName + '\'' +
                ", price=" + price +
                '}';
    }

    public Book(String isbn, String bookName, float price) {
        this.isbn = isbn;
        this.bookName = bookName;
        this.price = price;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }
}

3、配置连接数据库源 jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/books?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
jdbc.username=root
jdbc.password=123456

4、配置spring类

package config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;

//开启注解开发模式
@Configuration
//扫描组件
@ComponentScan({"dao","service"})
//引入数据源
@PropertySource(value = {"classpath:jdbc.properties"},encoding = "utf-8")
//导入jdbcConfig
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}

5、配置jdbc类

package config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class JdbcConfig {


//    获取数据源
        @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

//    配置数据源

    @Bean
    public DataSource dataSource() {

        DruidDataSource ds = new DruidDataSource();

        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);

        return ds;
    }

}

6、配置mybatis类

package config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MybatisConfig {

//    配置mybatis
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {

        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
//        获取到数据源
        ssfb.setDataSource(dataSource);

//        与实体映射
        ssfb.setTypeAliasesPackage("entity");

        return ssfb;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {

        MapperScannerConfigurer maper = new MapperScannerConfigurer();

//        这里映射连接数据据的接口
        maper.setBasePackage("dao");

        return maper;
    }
}

7、基础性工作已经完成了,接下来就是常规操作了,就是在dao层定义连接数据库的接口,在service层定义逻辑运算,目前主要做中转,然后在test包测试结果

        7.1、dao层

package dao;

import entity.Book;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface BookDao {

//    查询
    @Select("select * from book")
    List<Book> queryAll();

}

        7.2、service层

package service;

import entity.Book;

import java.util.List;

public interface BookService {
    List<Book> queryAll();
}
package service.Impl;

import dao.BookDao;
import entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import service.BookService;

import java.util.List;

@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookDao bookDao;

    public List<Book> queryAll() {
        return bookDao.queryAll();
    }

}

        7.3、test包

import config.SpringConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import service.BookService;

//设定类运行器
@RunWith(value = SpringJUnit4ClassRunner.class)
//spring的配置类
@ContextConfiguration(classes = SpringConfig.class)
public class BookTest {

    @Autowired
    private BookService bookService;

    @Test
    public void book() {
        System.out.println(bookService.queryAll());

    }
}

8、测试截图

        

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值