Spring-Data-Jpa Crud示例

来源:互联网 发布:韩信点兵的算法 编辑:程序博客网 时间:2024/05/21 18:34

前言

之前在上一次只是简单讲了一下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的道路上继续奋进.