SpringBoot整合JUnit
貌似不用手动整合,创建一个springboot模块就有,是通过@SpringBootTest这个注解定义测试类的
- dao
public interface BookDao{
public void save();
}
- daoImpl
@Repository
public class BookDaoImpl implements BookDao {
@Override
public void save() {
System.out.println("bookdao test");
}
}
- test类
@SpringBootTest
class Springboot0301JunitApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
bookDao.save();
}
}
它不用整合的原因是创建工程的时候自带有测试对应的starter且存在@SpringBootTest注解修饰的测试类
- 测试类的位置
当测试类位于引导类所在的包或者子包下没有任何问题,但是如果不在就会爆错。解决方法:- 01:再SpringBoot注解添加classes属性@SpringBoot(classes = 引导类类名.class)
原因spring整合junit需要RunWith和ContextConfiguration,分别用于设置运行器和指定配置文件/配置类。 - 02:使用@ContextConfiguration(引导类.class)
- 01:再SpringBoot注解添加classes属性@SpringBoot(classes = 引导类类名.class)
SpringBoot整合MyBatis
创建新模块,勾选mybatis framework和sql Driver
- mybatis相关的starter
这里创建工程勾选相对应的模块会自动创建
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
- 数据库配置信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_crud
username: root
password: "!Wzh2352186607"
- 实体类封装数据
public class Dept {
private Integer deptId;
private String deptName;
..........
- 映射配置
也可以用Repository注解,二者的区别可以参考:
https://www.jianshu.com/p/34f48d31edee。当然mapper也可以去掉,但是应该在启动类加上mapperscan
@Mapper
public interface BookDao {
@Select("select * from tbl_dept where dept_id=#{deptId}")
public Dept getById(Integer deptId);
}
- test
@SpringBootTest
class Springboot0302MyBatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.getById(1));
}
}
更改springboot的版本再次运行报错,说需要设置服务器的时区?(这是mysql5和8的区别?)
评论区有人说写成serverTimeZone=Asia/Shanghai
classpath代表的时编译后的classes文件夹
SpringBoot整合Mybatis-plus
创建新模块
找不到mybatis-plus只有mysql Driver。
- 解决方法1:
解决方法:创建模块的时候下载地址选择阿里云的https://start.aliyun.com
勾选模块
- 解决方法2:
还是使用之前的方式创建,只导入mysql的驱动。
搜索mp的starter的坐标,复制到pom
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
删除原来的boot的起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
配置连接
注意表名需要配置前缀(因为表名和实体类名查了一个前缀)
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
复制之前的实体类,dao
修改dao
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
修改实体类
public class Dept{
@TableId(value = "dept_id")
private Integer deptId;
@TableField(value = "dept_name")
private String deptName;
..........
BaseMapper里面有很多增删改查的方法
测试
@SpringBootTest
class Springboot0303MpApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.selectById(2));;
}
}
SpringBoot整合Druid
创建模块勾选驱动和mybaits,
- 手动导入druid的starter
- 配置数据源(两种方式)
…