1. 首先建立User表
2. 建立User Entity类(Entity)
User.class
@Entity 指定当前类为实体类
@Table(name = “user”) 与数据库表名对应
@Id 标记为主键
@GeneratedValue(strategy = GenerationType.IDENTITY) 定义ID为主键,IDENTITY可以同时兼容H2和hibernate
@Column(name = “phone_number”) 标记与数据库中名称对应
JPA @Id 和 @GeneratedValue 注解详解
https://blog.youkuaiyun.com/coding1994/article/details/79597057
3. 建立JPA操作类(repository)
建立UserRepository 接口 继承 CrudRepository <表名,主键类型>
public interface UserRepository extends CrudRepository<User,Long>
SpringData中的CrudRepository接口
https://blog.youkuaiyun.com/strive_peter/article/details/76276758
4. 建立测试类
将主测试类无用方法删除,因为测试类的注解@RunWith(SpringRunner.class) @SpringBootTest都是这俩个,可以将这个类作为父类,其他类继承它
在测试类建立一个Entity包,建立一个UserRepositoryTest类继承ApplicationTest类,并实现对用户表数据的抽取。
从结果上看无错误出现,并且输出admin说明从数据库获取到了数据。那么整个从数据库中取数据的过程是如何实现的呢?
首先,测试类@Autowired注入了userRepository接口,userRepository继承了CrudRepository所以可以有findOne函数去寻找数据表中的数据。(疑问直接注入接口就可以实例化???)
那么数据表在后面<User,Long>定义好了User就是entity 的User类这个实体类用于接收从数据表中查询的数据。(JPAConfig类通过自动扫描entity文件与他们联系起来)
Assert.assertEquals(“admin”, user.getName());用于判断是否一致,不一致会报错
5. 设置不同配置文件
我们希望测试时使用测试环境,开发时使用开发环境
由此我们建立application.properties application-dev.properties application-test.properties application-online.properties 四个配置
并将application.properties 中加入spring.profiles.active=dev
将mysql相关配置移入application-dev.properties
在application-test.properties 中加入h2驱动,这样就可以在内存中使用内存数据库了
在测试函数前加入注解@ActiveProfiles(“test”)可以默认访问test配置文件
然后做单元测试依然成功