public interface UserDAO {
User findById(int id);
List<User> findAll();
void save(User user);
void update(User user);
void delete(User user);
}
@Repository
public class UserDAOImpl implements UserDAO {
@PersistenceContext
private EntityManager entityManager;
@Override
public User findById(int id) {
return entityManager.find(User.class, id);
}
@Override
public List<User> findAll() {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);
Root<User> root = cq.from(User.class);
cq.select(root);
TypedQuery<User> query = entityManager.createQuery(cq);
return query.getResultList();
}
@Override
public void save(User user) {
entityManager.persist(user);
}
@Override
public void update(User user) {
entityManager.merge(user);
}
@Override
public void delete(User user) {
entityManager.remove(user);
}
}
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
...
</dependencies>
properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
@Autowired
private UserDAO userDAO;
User user = userDAO.findById(1);
List<User> users = userDAO.findAll();
User newUser = new User();
newUser.setName("John");
userDAO.save(newUser);
user.setName("Tom");
userDAO.update(user);
userDAO.delete(user);