commit
						9133c66d63
					
				| @ -46,6 +46,13 @@ | ||||
| 			<version>${mysql-connector-java.version}</version> | ||||
| 			<scope>runtime</scope> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<groupId>org.springframework.data</groupId> | ||||
| 			<artifactId>spring-data-jpa</artifactId> | ||||
| 			<version>1.6.0.RELEASE</version> | ||||
|     		<scope>compile</scope> | ||||
| 		</dependency> | ||||
| 		 | ||||
| 
 | ||||
| 		<!-- validation --> | ||||
| 
 | ||||
|  | ||||
| @ -0,0 +1,11 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| 
 | ||||
| public interface IUserDAO { | ||||
|     List<User> searchUser(String first, String last, int minAge); | ||||
| 
 | ||||
|     void save(User entity); | ||||
| } | ||||
| @ -0,0 +1,43 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import javax.persistence.EntityManager; | ||||
| import javax.persistence.PersistenceContext; | ||||
| import javax.persistence.criteria.CriteriaBuilder; | ||||
| import javax.persistence.criteria.CriteriaQuery; | ||||
| import javax.persistence.criteria.Predicate; | ||||
| import javax.persistence.criteria.Root; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.springframework.stereotype.Repository; | ||||
| 
 | ||||
| @Repository | ||||
| public class UserDAO implements IUserDAO { | ||||
| 
 | ||||
|     @PersistenceContext | ||||
|     private EntityManager entityManager; | ||||
| 
 | ||||
|     @Override | ||||
|     public List<User> searchUser(final String first, final String last, final int minAge) { | ||||
|         final CriteriaBuilder builder = entityManager.getCriteriaBuilder(); | ||||
|         final CriteriaQuery<User> query = builder.createQuery(User.class); | ||||
|         final Root r = query.from(User.class); | ||||
| 
 | ||||
|         Predicate predicate = builder.conjunction(); | ||||
|         predicate = builder.and(predicate, builder.like(r.get("firstName"), "%" + first + "%")); | ||||
|         predicate = builder.and(predicate, builder.like(r.get("lastName"), "%" + last + "%")); | ||||
|         predicate = builder.and(predicate, builder.greaterThanOrEqualTo(r.get("age"), minAge)); | ||||
| 
 | ||||
|         query.where(predicate); | ||||
| 
 | ||||
|         final List<User> result = entityManager.createQuery(query).getResultList(); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void save(final User entity) { | ||||
|         entityManager.persist(entity); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,96 @@ | ||||
| package org.baeldung.persistence.model; | ||||
| 
 | ||||
| import javax.persistence.Entity; | ||||
| import javax.persistence.GeneratedValue; | ||||
| import javax.persistence.GenerationType; | ||||
| import javax.persistence.Id; | ||||
| 
 | ||||
| @Entity | ||||
| public class User { | ||||
| 
 | ||||
|     @Id | ||||
|     @GeneratedValue(strategy = GenerationType.AUTO) | ||||
|     private Long id; | ||||
| 
 | ||||
|     private String firstName; | ||||
| 
 | ||||
|     private String lastName; | ||||
| 
 | ||||
|     private String email; | ||||
| 
 | ||||
|     private int age; | ||||
| 
 | ||||
|     public User() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     public Long getId() { | ||||
|         return id; | ||||
|     } | ||||
| 
 | ||||
|     public void setId(final Long id) { | ||||
|         this.id = id; | ||||
|     } | ||||
| 
 | ||||
|     public String getFirstName() { | ||||
|         return firstName; | ||||
|     } | ||||
| 
 | ||||
|     public void setFirstName(final String firstName) { | ||||
|         this.firstName = firstName; | ||||
|     } | ||||
| 
 | ||||
|     public String getLastName() { | ||||
|         return lastName; | ||||
|     } | ||||
| 
 | ||||
|     public void setLastName(final String lastName) { | ||||
|         this.lastName = lastName; | ||||
|     } | ||||
| 
 | ||||
|     public String getEmail() { | ||||
|         return email; | ||||
|     } | ||||
| 
 | ||||
|     public void setEmail(final String username) { | ||||
|         email = username; | ||||
|     } | ||||
| 
 | ||||
|     public int getAge() { | ||||
|         return age; | ||||
|     } | ||||
| 
 | ||||
|     public void setAge(final int age) { | ||||
|         this.age = age; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         final int prime = 31; | ||||
|         int result = 1; | ||||
|         result = prime * result + ((email == null) ? 0 : email.hashCode()); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean equals(final Object obj) { | ||||
|         if (this == obj) | ||||
|             return true; | ||||
|         if (obj == null) | ||||
|             return false; | ||||
|         if (getClass() != obj.getClass()) | ||||
|             return false; | ||||
|         final User user = (User) obj; | ||||
|         if (!email.equals(user.email)) | ||||
|             return false; | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         final StringBuilder builder = new StringBuilder(); | ||||
|         builder.append("User [firstName=").append(firstName).append("]").append("[lastName=").append(lastName).append("]").append("[username").append(email).append("]"); | ||||
|         return builder.toString(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package org.baeldung.persistence.service; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import org.baeldung.persistence.dao.IUserDAO; | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| 
 | ||||
| @Service | ||||
| @Transactional | ||||
| public class UserService { | ||||
|     @Autowired | ||||
|     private IUserDAO dao; | ||||
| 
 | ||||
|     public UserService() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     public void saveUser(final User user) { | ||||
|         dao.save(user); | ||||
|     } | ||||
| 
 | ||||
|     public List<User> searchUser(final String first, final String last, final int minAge) { | ||||
|         return dao.searchUser(first, last, minAge); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,85 @@ | ||||
| package org.baeldung.persistence.query; | ||||
| 
 | ||||
| import static org.junit.Assert.assertEquals; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import org.baeldung.config.PersistenceJPAConfig; | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.baeldung.persistence.service.UserService; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.test.context.ContextConfiguration; | ||||
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | ||||
| import org.springframework.test.context.support.AnnotationConfigContextLoader; | ||||
| import org.springframework.test.context.transaction.TransactionConfiguration; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| 
 | ||||
| @RunWith(SpringJUnit4ClassRunner.class) | ||||
| @ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class) | ||||
| @Transactional | ||||
| @TransactionConfiguration | ||||
| public class JPACriteriaQueryTest { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private UserService userService; | ||||
| 
 | ||||
|     private User user_john; | ||||
| 
 | ||||
|     private User user_tom; | ||||
| 
 | ||||
|     @Before | ||||
|     public void init() { | ||||
|         user_john = new User(); | ||||
|         user_john.setFirstName("John"); | ||||
|         user_john.setLastName("Doe"); | ||||
|         user_john.setEmail("john@doe.com"); | ||||
|         user_john.setAge(22); | ||||
|         userService.saveUser(user_john); | ||||
| 
 | ||||
|         user_tom = new User(); | ||||
|         user_tom.setFirstName("Tom"); | ||||
|         user_tom.setLastName("Doe"); | ||||
|         user_tom.setEmail("tom@doe.com"); | ||||
|         user_tom.setAge(26); | ||||
|         userService.saveUser(user_tom); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenFirstAndLastName_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = userService.searchUser("John", "Doe", 0); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(user_john.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = userService.searchUser("", "doe", 0); | ||||
|         assertEquals(2, result.size()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenLastAndAge_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = userService.searchUser("", "doe", 25); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(user_tom.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenWrongFirstAndLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = userService.searchUser("Adam", "Fox", 0); | ||||
|         assertEquals(0, result.size()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenPartialFirstAndLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = userService.searchUser("jo", "", 0); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(user_john.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user