Skip to content

Commit d783aba

Browse files
er-hanmaibin
authored andcommitted
BAEL-2839 Added code samples (eugenp#6916)
1 parent a905fe2 commit d783aba

3 files changed

Lines changed: 302 additions & 0 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.baeldung.derivedquery.entity;
2+
3+
import javax.persistence.Entity;
4+
import javax.persistence.GeneratedValue;
5+
import javax.persistence.Id;
6+
import javax.persistence.Table;
7+
import java.time.ZonedDateTime;
8+
9+
@Table(name = "users")
10+
@Entity
11+
public class User {
12+
13+
@Id
14+
@GeneratedValue
15+
private Integer id;
16+
private String name;
17+
private Integer age;
18+
private ZonedDateTime birthDate;
19+
private Boolean active;
20+
21+
public User() {
22+
}
23+
24+
public User(String name, Integer age, ZonedDateTime birthDate, Boolean active) {
25+
this.name = name;
26+
this.age = age;
27+
this.birthDate = birthDate;
28+
this.active = active;
29+
}
30+
31+
public Integer getId() {
32+
return id;
33+
}
34+
35+
public void setId(Integer id) {
36+
this.id = id;
37+
}
38+
39+
public String getName() {
40+
return name;
41+
}
42+
43+
public void setName(String name) {
44+
this.name = name;
45+
}
46+
47+
public Integer getAge() {
48+
return age;
49+
}
50+
51+
public void setAge(Integer age) {
52+
this.age = age;
53+
}
54+
55+
public ZonedDateTime getBirthDate() {
56+
return birthDate;
57+
}
58+
59+
public void setBirthDate(ZonedDateTime birthDate) {
60+
this.birthDate = birthDate;
61+
}
62+
63+
public Boolean getActive() {
64+
return active;
65+
}
66+
67+
public void setActive(Boolean active) {
68+
this.active = active;
69+
}
70+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.baeldung.derivedquery.repository;
2+
3+
import com.baeldung.derivedquery.entity.User;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
import java.time.ZonedDateTime;
7+
import java.util.Collection;
8+
import java.util.List;
9+
10+
public interface UserRepository extends JpaRepository<User, Integer> {
11+
12+
List<User> findByName(String name);
13+
14+
List<User> findByNameIs(String name);
15+
16+
List<User> findByNameEquals(String name);
17+
18+
List<User> findByNameIsNull();
19+
20+
List<User> findByNameNot(String name);
21+
22+
List<User> findByNameIsNot(String name);
23+
24+
List<User> findByNameStartingWith(String name);
25+
26+
List<User> findByNameEndingWith(String name);
27+
28+
List<User> findByNameContaining(String name);
29+
30+
List<User> findByNameLike(String name);
31+
32+
List<User> findByAgeLessThan(Integer age);
33+
34+
List<User> findByAgeLessThanEqual(Integer age);
35+
36+
List<User> findByAgeGreaterThan(Integer age);
37+
38+
List<User> findByAgeGreaterThanEqual(Integer age);
39+
40+
List<User> findByAgeBetween(Integer startAge, Integer endAge);
41+
42+
List<User> findByBirthDateAfter(ZonedDateTime birthDate);
43+
44+
List<User> findByBirthDateBefore(ZonedDateTime birthDate);
45+
46+
List<User> findByActiveTrue();
47+
48+
List<User> findByActiveFalse();
49+
50+
List<User> findByAgeIn(Collection<Integer> ages);
51+
52+
List<User> findByNameOrBirthDate(String name, ZonedDateTime birthDate);
53+
54+
List<User> findByNameOrBirthDateAndActive(String name, ZonedDateTime birthDate, Boolean active);
55+
56+
List<User> findByNameOrderByName(String name);
57+
58+
List<User> findByNameOrderByNameDesc(String name);
59+
60+
}
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package com.baeldung.derivedquery.repository;
2+
3+
import com.baeldung.Application;
4+
import com.baeldung.derivedquery.entity.User;
5+
import com.baeldung.derivedquery.repository.UserRepository;
6+
import java.time.ZonedDateTime;
7+
import java.util.Arrays;
8+
import java.util.List;
9+
import org.junit.After;
10+
import org.junit.Before;
11+
import org.junit.Test;
12+
import org.junit.runner.RunWith;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import org.springframework.boot.test.context.SpringBootTest;
15+
import org.springframework.test.context.junit4.SpringRunner;
16+
17+
import static org.junit.Assert.assertEquals;
18+
19+
@RunWith(SpringRunner.class)
20+
@SpringBootTest(classes = Application.class)
21+
public class UserRepositoryTest {
22+
23+
private static final String USER_NAME_ADAM = "Adam";
24+
private static final String USER_NAME_EVE = "Eve";
25+
private static final ZonedDateTime BIRTHDATE = ZonedDateTime.now();
26+
27+
@Autowired
28+
private UserRepository userRepository;
29+
30+
@Before
31+
public void setUp() {
32+
33+
User user1 = new User(USER_NAME_ADAM, 25, BIRTHDATE, true);
34+
User user2 = new User(USER_NAME_ADAM, 20, BIRTHDATE, false);
35+
User user3 = new User(USER_NAME_EVE, 20, BIRTHDATE, true);
36+
User user4 = new User(null, 30, BIRTHDATE, false);
37+
38+
userRepository.saveAll(Arrays.asList(user1, user2, user3, user4));
39+
}
40+
41+
@After
42+
public void tearDown() {
43+
44+
userRepository.deleteAll();
45+
}
46+
47+
@Test
48+
public void whenFindByName_thenReturnsCorrectResult() {
49+
50+
assertEquals(2, userRepository.findByName(USER_NAME_ADAM).size());
51+
}
52+
53+
@Test
54+
public void whenFindByNameIsNull_thenReturnsCorrectResult() {
55+
56+
assertEquals(1, userRepository.findByNameIsNull().size());
57+
}
58+
59+
@Test
60+
public void whenFindByNameNot_thenReturnsCorrectResult() {
61+
62+
assertEquals(USER_NAME_EVE, userRepository.findByNameNot(USER_NAME_ADAM).get(0).getName());
63+
}
64+
65+
@Test
66+
public void whenFindByNameStartingWith_thenReturnsCorrectResult() {
67+
68+
assertEquals(2, userRepository.findByNameStartingWith("A").size());
69+
}
70+
71+
@Test
72+
public void whenFindByNameEndingWith_thenReturnsCorrectResult() {
73+
74+
assertEquals(1, userRepository.findByNameEndingWith("e").size());
75+
}
76+
77+
@Test
78+
public void whenByNameContaining_thenReturnsCorrectResult() {
79+
80+
assertEquals(1, userRepository.findByNameContaining("v").size());
81+
}
82+
83+
84+
@Test
85+
public void whenByNameLike_thenReturnsCorrectResult() {
86+
87+
assertEquals(2, userRepository.findByNameEndingWith("%d%m").size());
88+
}
89+
90+
@Test
91+
public void whenByAgeLessThan_thenReturnsCorrectResult() {
92+
93+
assertEquals(2, userRepository.findByAgeLessThan(25).size());
94+
}
95+
96+
97+
@Test
98+
public void whenByAgeLessThanEqual_thenReturnsCorrectResult() {
99+
100+
assertEquals(3, userRepository.findByAgeLessThanEqual(25).size());
101+
}
102+
103+
@Test
104+
public void whenByAgeGreaterThan_thenReturnsCorrectResult() {
105+
106+
assertEquals(1, userRepository.findByAgeGreaterThan(25).size());
107+
}
108+
109+
@Test
110+
public void whenByAgeGreaterThanEqual_thenReturnsCorrectResult() {
111+
112+
assertEquals(2, userRepository.findByAgeGreaterThanEqual(25).size());
113+
}
114+
115+
@Test
116+
public void whenByAgeBetween_thenReturnsCorrectResult() {
117+
118+
assertEquals(4, userRepository.findByAgeBetween(20, 30).size());
119+
}
120+
121+
@Test
122+
public void whenByBirthDateAfter_thenReturnsCorrectResult() {
123+
124+
final ZonedDateTime yesterday = BIRTHDATE.minusDays(1);
125+
assertEquals(4, userRepository.findByBirthDateAfter(yesterday).size());
126+
}
127+
128+
@Test
129+
public void whenByBirthDateBefore_thenReturnsCorrectResult() {
130+
131+
final ZonedDateTime yesterday = BIRTHDATE.minusDays(1);
132+
assertEquals(0, userRepository.findByBirthDateBefore(yesterday).size());
133+
}
134+
135+
@Test
136+
public void whenByActiveTrue_thenReturnsCorrectResult() {
137+
138+
assertEquals(2, userRepository.findByActiveTrue().size());
139+
}
140+
141+
@Test
142+
public void whenByActiveFalse_thenReturnsCorrectResult() {
143+
144+
assertEquals(2, userRepository.findByActiveFalse().size());
145+
}
146+
147+
148+
@Test
149+
public void whenByAgeIn_thenReturnsCorrectResult() {
150+
151+
final List<Integer> ages = Arrays.asList(20, 25);
152+
assertEquals(3, userRepository.findByAgeIn(ages).size());
153+
}
154+
155+
@Test
156+
public void whenByNameOrBirthDate() {
157+
158+
assertEquals(4, userRepository.findByNameOrBirthDate(USER_NAME_ADAM, BIRTHDATE).size());
159+
}
160+
161+
@Test
162+
public void whenByNameOrBirthDateAndActive() {
163+
164+
assertEquals(3, userRepository.findByNameOrBirthDateAndActive(USER_NAME_ADAM, BIRTHDATE, false).size());
165+
}
166+
167+
@Test
168+
public void whenByNameOrderByName() {
169+
170+
assertEquals(2, userRepository.findByNameOrderByName(USER_NAME_ADAM).size());
171+
}
172+
}

0 commit comments

Comments
 (0)