Spring-Data-Jpa Crud示例

前言

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值