零时尚商城-后端项目搭建
本篇任务: 1.在博客1的基础上,完成整合Mybatis 2.单元测试 3.整合Driud
1.整合Mybatis
1.4.1 common子工程
1.4.2 beans子工程
1.4.3 mybatis子工程–整合mybatis
- 在mapper子工程的pom文件中,新增mybatis所需的依赖
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--spring-boot-starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.4.4</version>
</dependency>
<!--mybatis-starter-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
- 在
mapper子工程 的resources目录创建application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/zerofashion_boot?characterEncording=utf-8
username: root
password: 123456
mybatis:
mapper-locations: classpath:mappers/*Mapper.xml
type-aliases-package: com.yty.zeromall.entity
这里注意,这个·实体类·别名路径是在beans模块下,我这里是mapper模块进行其别名配置,既然我这里引用了这个路径,那么beans模块的实体类的路径应该和这里一样才能调用成功!
- 在api子工程的启动类通过
@MapperScan 声明dao包的路径
@SpringBootApplication
@MapperScan("com.yty.zeromall.dao")
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
这里和上面同理。
2.单元测试
先去mapper子模块加test的依赖
<!--要进行单元测试就得加这个-->
<!--mybatis-test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
1.beans
User
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private int userId;
private int userName;
private int userAge;
}
2.mapper
UserDao
public interface UserDao {
public User queryUserByName(String name);
}
UserMapper.xml
<?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.yty.zeromall.dao.UserDao">
<resultMap id="userMapYTY" type="User">
<id column="user_id" property="userId"></id>
<result column="user_name" property="userName"></result>
<result column="user_age" property="userAge"></result>
</resultMap>
<!--查询-->
<select id="queryUserByName" resultMap="userMapYTY">
select user_id,user_name,user_age
from users
where user_name=#{name};
</select>
</mapper>
3.测试
在要测试的dao下,然后直接alt+insert(Fn) 然后: 点击OK后,就会是: 然后修改: 运行报 初始化 错误:
2.1 解决方法
这是因为springboot的单元测试需要运行一个main 方法,也就是启动类,通过启动类加载配置。 所以要让@SpringBootTest去指定启动类。 启动类在api模块中,也就是controller模块中,但是我的mapper模块又没依赖api,所以只能将测试放到api里面去进行,并将依赖也加进去。 如图:直接将文件夹复制过去 然后DeBug测试一下: 然后继续运行:
至此,单元测试成功!
3. 整合Druid
因为数据源肯定是和mapper打交道,也就是mybatis,所以在mapper模块中添加druid依赖。 默认是Hikara数据源,我们改成Druid数据源。
3.1 添加druid-starter依赖
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
3.2.修改yml文件
3.3运行启动类测试
控制台发现已经:初始化druid数据源了
|