基于SpringBoot打造在线教育系统(2)-- 深入学习JPA与Junit测试2

简介: 现在User表已经有了,而且对应mysql数据库里面,已经建好了用户表。

0a3d081ac46817f30b437e8ae0ecca0b.png

地址:https://blog.csdn.net/qq_33405420/article/details/89469293

兔子:“这写的没问题啊,只是别人不知道你这么菜而已,他也不知道你直接在junit测试类里面去测试dao的方法,而且还不加事物。”

dc381c4233d8c1537f3332fc5ec4488a.png

“。。。好吧,那我后面建立service方法的时候,一定加上事物。”


兔子:“没事,我刚开始也这样,慢慢来就好了。对了,我已经把公众号的名字改成了【java小白翻身】,记得关注哦~”


##4. 试试jpa的其他修改用法

话说这JPA还真好用,基本的增删改查我都不用写一句sql,对于一些复杂的业务逻辑,我也可以自己写jpql语句(其实还是sql语句,算是面向对象的sql语句吧)。


接下来,我就试试别的方法。刚才已经插入了一条数据,现在我再用另一种方法去修改数据,比如,我把密码改成123吧。

  @Test
  public void modifyPassword(){
    User user = new User();
    user.setUserName("root");
    user.setPassword("123");
    userDao.saveAndFlush(user);
    System.out.println("修改成功");
  }

运行,结果崩了…

982cb4afbe7ad6b789fc223eef063f97.png

其他的数据全没了,看来这种更新是全量的更新,不是增量的。我还以为他会只更新userName和password呢,看来是我太天真了。不怕,我再运行一下adduser测试方法,数据不就回来了嘛。。

我太机智了。

2e903f849040e847169d87e352c78071.png

再运行一次,数据果然回来了。

这回得小心一点了,我先根据主键userName去拿到这个用户,然后再修改密码:

  @Test
  public void modifyPassword(){
    User user = new User();
    user.setUserName("root");
    //先找到userName为root的用户
    user = userDao.findOne("root");
    //修改密码
    user.setPassword("123");
    userDao.saveAndFlush(user);
    System.out.println("修改成功");
  }

f1b38291189248e97805d2c8dab5bf10.png

这下子就成功了。

##5. JPA的奇技淫巧

springDataJpa还实现了一个非常牛逼的东西,就是根据方法名自动进行sql查询。

比如,我想根据roleId去做查询,就可以直接写一个方法:

public List<User> findByRoleId(String roleId);

####SpringData JPA方法命名规则查询


顾名思义,方法命名规则查询就是根据方法的名字,就能创建查询。


只需要按照Spring Data JPA提供的方法命名规则定义方法的名称,就可以完成查询工作。


Spring Data JPA在程序执行的时候会根据方法名称进行解析,并自动生成查询语句进行查询


按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,


要注意的是:条件属性首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。

6075585063a4be8bc42d353dd123c227.png

我们多造一点测试数据,用addUser方法。

0ca9ee7b954b6c90736181e6681f07ca.png

比如,我们现在要查询nickName里面带有“剽悍”的,就用like。

public List<User> findByNickNameLike(String nickName);

测试:

  @Test
  public void userQuery(){
    List<User> users = userDao.findByNickNameLike("%剽悍%");
    for (int i = 0; i < users.size(); i++) {
      System.out.println(users.get(i).getNickName());
    }
  }

结果:

8d83872cecfa4e7eda51d88108d3bcc8.png

这个算是jpa里面一个很有意思的用法了,但是我感觉这样心里好没底啊,哈哈。最稳妥的办法,还是直接写JPQL语句吧。

比如,我这样写:

@Query("select u from User u where userName = ?1 and password = ?2")
public User findByUserNameAndPassword(String userName,String password);

这样的好处就是,你想写什么查询就写什么查询,是最放心的。

50f8d4ba73dba720ad3b78b9abde8f16.png

JPA里面最常用的两种传参方式,就是这两种。


其实,jpa里面还有很多其他的拼接方法,但是我看来看去,都太麻烦了,还是直接用JPQL最省事。对于简单的查询,就直接用默认的方法即可,复杂的查询,就老老实实自己写sql吧。



相关文章
|
1月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
64 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
7天前
|
Java 测试技术 Android开发
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
|
2月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
2月前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
55 10
|
3月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
103 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3月前
|
安全 Java 测试技术
springboot之SpringBoot单元测试
本文介绍了Spring和Spring Boot项目的单元测试方法,包括使用`@RunWith(SpringJUnit4ClassRunner.class)`、`@WebAppConfiguration`等注解配置测试环境,利用`MockMvc`进行HTTP请求模拟测试,以及如何结合Spring Security进行安全相关的单元测试。Spring Boot中则推荐使用`@SpringBootTest`注解简化测试配置。
184 4
|
4月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
157 4
|
4月前
|
Java 测试技术 数据库连接
使用Spring Boot编写测试用例:实践与最佳实践
使用Spring Boot编写测试用例:实践与最佳实践
196 0
|
2月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
1月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
98 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡