前言
之前在上一次只是简单讲了一下Spring中如何使用Spring-Data-Jpa来将Spring与Jpa融合,配置文件的设置和参数说明.这次根据一个具体的增删改查的例子来演示一下.话不多说,上代码(配置文档按照之前的Spring-Data-Jpa的概述中的方式配置即可).
实现原理
类之间的关系
对应的类文件
User实体类
package cn.edu.sdut.softlab.entity;
@Entity
@Table(name="user")
public class User{
@Id
@GenerateValue
private Integer id;
private String name;
private Stirng address;
private String phone;
public User(){
}
}
UserRepository接口
package cn.edu.sdut.softlab.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import cn.edu.sdut.softlab.entity.User;
public interface UserRepository extends JpaRepository<User,Integer>{
@Modifying // 说明该方法是修改操作
@Transactional // 说明该方法是事务性操作
@Query("update UserEntity us set us.firstName=:qFirstName, "
+ "us.lastName=:qLastName, us.password=:qPassword where us.id=:qId")
void updateUser(
@Param("qFirstName") String firstName,
@Param("qLastName") String lastName,
@Param("qPassword") String password,
@Param("qId") Integer id);
}
UserService接口
package cn.edu.sdut.softlab.repository;
import cn.edu.sdut.softlab.entity.User;
import java.util.List;
public interface UserService {
public void addUser(User user);
public void UpdateUser(User user);
public void delectUser(User user);
public User getUser(Integer id);
public List<User> getUsers();
}
UserServiceImpl
package cn.edu.sdut.softlab.service;
import org.springframework.beans.factory.annotation.Autowired;
import cn.edu.sdut.softlab.repository.UserRepository;
public class UserSerivceImpl implements UserService {
@Autowired
private UserRepository userrepository;
@Override
public void addUser(User user){
userrepository.save(user);
}
@Override
public void updateUser(User user){
User userEntity = userrepository.findOne(user.getId());
userrepository.updateUser(
userEntity.getFirstName(),
userEntity.getLastName(),
userEntity.getPassword(),
userEntity.getId()
);
}
@Override
public void delectUser(User user){
User user = userrepository.findOne(user.getId());
userrepository.delect(user);
userrepository.flush();
}
@Override
public User getUser(Integer id){
User user = userrepository.findOne(id);
return user;
}
@Override
public List<User> getUsers(){
List<User> users = userrepository.findAll();
return users;
}
}
以上是对示例的大致性的演示,异常类和测试类暂时不写了,不太完善,但是主要部分基本展示完了.这里有一个具体的示例(能正常运行)–Spring-Data-Jpa Demo.希望对你们有用!
总结
其实仔细观察一下JpaRepository接口里面的方法,对照一下Jpa原始的EntityManager接口的方法.两者都是一些增删改查的方法,本质是一样的,只不过Spring-Data-Jpa对它进行了分层化的处理,其实从功能上来看没什么区别.所以说,你会用Jpa,就离掌握Spring-Data-Jpa很近了,需要注意的就是Spring的一些规范和方式特性的问题了.至此,望读者在Spring的道路上继续奋进.