spring-data-jpa实现增删改查以及分页操作方法

有几个坑一定要注意:

实现删除操作的时候一定要在各层类中 增加

@Transactional

注释,否则会一直报错

在自己使用@Query定义操作时,会碰到编译器报错,这个时候只需要禁用QL的语法检查即可

以下是部分代码:

//Repository

package com.example.myproject.dao;
import com.example.myproject.domain.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import javax.transaction.Transactional;
import java.util.List;
/**
 * Created by lenovo on 2017/4/19.
 */
@Transactional
public interface UserRepository extends JpaRepository<User,Long> {

  void deleteById(int id);
  void deleteByName(String name);
  void deleteBySex(String sex);
  void deleteByAge(int age);
  void removeByNameAndAge(String name, int age);
  @Modifying
  @Query(value = "update user u set u.name = :newName where u.name = :oldName",nativeQuery = true)
  void updateNameByName(@Param("oldName") String oldName, @Param("newName") String newName);
  List<User> findAll();
  Page<User> findAll(Pageable pageable);
  List<User> findByName(String name);
  List<User> findBySex(String sex);
  List<User> findByAge(int age);
  User findByNameAndSex(String name, String sex);
}

//Controller

package com.example.myproject.web; 

import com.example.myproject.dao.UserRepository;
import com.example.myproject.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; 

import javax.transaction.Transactional;
import java.util.List; 

/**
 * Created by lenovo on 2017/4/19.
 */
@RestController
@RequestMapping("/")
@Transactional
public class UserController {
 @Autowired
 private UserRepository userRepository; 

 @RequestMapping(value = "/userSave")
 public String userSave(@RequestParam String name,@RequestParam String sex,@RequestParam int age) {
  User user = new User();
  user.setName(name);
  user.setAge(age);
  user.setSex(sex);
  userRepository.save(user);
  return "true";
 } 

 @RequestMapping(value = "/deleteById")
 public String deleteById(@RequestParam int id) {
  userRepository.deleteById(id);
  return "success";
 } 

 @RequestMapping(value = "/deleteByName")
 public String deleteByName(@RequestParam String name) {
  userRepository.deleteByName(name);
  return "success";
 } 

 @RequestMapping(value = "/deleteBySex")
 public String deleteBySex(@RequestParam String sex) {
  userRepository.deleteBySex(sex);
  return "success";
 } 

 @RequestMapping(value = "/deleteByAge")
 public String deleteByAge(@RequestParam int age) {
  userRepository.deleteByAge(age);
  return "success";
 } 

 @RequestMapping(value = "/deleteByNameAndAge")
 public String deleteByNameAndAge(@RequestParam String name, @RequestParam int age) {
  userRepository.removeByNameAndAge(name,age);
  return "success";
 } 

 @RequestMapping(value = "/updateNameByName")
 public String updateNameByName(@RequestParam String oldName, @RequestParam String newName) {
  userRepository.updateNameByName(oldName,newName);
  return "success";
 } 

 @RequestMapping(value = "/findall")
 public List<User> findAll() {
  List<User> l =userRepository.findAll();
  return l;
 } 

 @RequestMapping(value = "/findallByPage")
 public Page<User> findAllByPage() {
  Sort sort = new Sort(Sort.Direction.ASC,"id");
  Pageable pageable = new PageRequest(2,6,sort);
  Page<User> page = userRepository.findAll(pageable);
  return page;
 } 

 @RequestMapping(value = "/findByName")
 public List<User> findByName(@RequestParam String name) {
  List<User> list =userRepository.findByName(name);
  return list;
 } 

 @RequestMapping(value = "/findByAge")
 public List<User> findByAge(@RequestParam int age) {
  List<User> list =userRepository.findByAge(age);
  return list;
 } 

 @RequestMapping(value = "/findBySex")
 public List<User> findBySex(@RequestParam String sex) {
  List<User> list =userRepository.findBySex(sex);
  return list;
 } 

 @RequestMapping(value = "/findByNameAndSex")
 public User findByNameAndSex(@RequestParam String name, @RequestParam String sex) {
  User list =userRepository.findByNameAndSex(name,sex);
  return list;
 }
} 

//User

package com.example.myproject.domain;
import javax.persistence.*;
/**
 * Created by lenovo on 2017/4/19.
 */
@Entity
public class User {
 @Id
 @GeneratedValue()
 private Integer id;
 @Column
 private String name;
 @Column
 private String sex;
 @Column
 private int age;
 public Integer getId() {
  return id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
}

以上这篇spring-data-jpa实现增删改查以及分页操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • SpringBoot JPA实现增删改查、分页、排序、事务操作等功能示例
  • spring data jpa分页查询示例代码
  • Spring Data Jpa实现分页和排序代码实例
  • SpringData JPA实现查询分页demo
  • Spring Boot中使用Spring-data-jpa实现数据库增删查改
  • 在Spring Boot中使用Spring-data-jpa实现分页查询
  • Spring Data JPA+kkpager实现分页功能实例
时间: 2018-02-09

SpringData JPA实现查询分页demo

SpringData JPA 的 PagingAndSortingRepository接口已经提供了对分页的支持,查询的时候我们只需要传入一个 org.springframework.data.domain.Pageable 接口的实现类,指定PageNumber和pageSize即可 springData包中的 PageRequest类已经实现了Pageable接口,我们可以直接使用下边是部分代码: DAO: package com.jiaoyiping.jdjy.sourcecode.dao

Spring Data JPA+kkpager实现分页功能实例

一.spring Data JPA分页 分页效果如下: 前台表格用的是: Bootstrap 分页插件用的是: kkpager kkpager是一个js分页展示控件,传入简单参数就能使用的分页效果控件,github地址:https://github.com/pgkk/kkpager 项目结构: FamilyMember实体类: package com.fendo.entity; import java.io.Serializable; import java.util.Date; import

Spring Data Jpa实现分页和排序代码实例

之前我们学习了如何使用Jpa访问关系型数据库.通过Jpa大大简化了我们对数据库的开发工作.但是,之前的例子中我们只提到了最简单的CRUD(增删改查)操作.实际上,Spring Data Jpa对于分页以及排序的查询也有着完美的支持,接下来,我们来学习如何通过Pageable来对数据库进行分页查询. 添加maven依赖 首先我们需要引入Jpa,数据库直接使用hsqldb内存数据库就可以了: <project xmlns="http://maven.apache.org/POM/4.0.0&q

在Spring Boot中使用Spring-data-jpa实现分页查询

在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式. 1.引入起步依赖   <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency&

spring data jpa分页查询示例代码

最近项目上用就hibernate+spring data jpa,一开始感觉还不错,但是随着对业务的复杂,要求处理一些复杂的sql,就顺便研究了下,把结果记录下,以便日后查看.用到Specification,需要继承JpaSpecificationExecutor接口.(下面代码有的分页从0开始作为第一页,有的从1开始作为作为第一页,我也忘记,请自己测试) DAO层: import java.util.List; import org.springframework.data.domain.Pa

Spring Boot中使用Spring-data-jpa实现数据库增删查改

在实际开发过程中,对数据库的操作无非就"增删改查".就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate.通过整合Hibernate之后,我们以操作Java实体的方式最终将数据改变映射到数据库表中. 为了解决抽象各个Java实体基本的"增删改查"操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这

SpringBoot JPA实现增删改查、分页、排序、事务操作等功能示例

今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查.分页.排序.事务操作等功能. 下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and 关键字,比如 findByHeightAndSex(int height,char sex): public List<User> findByHeightAndSex(int height,char sex); // Or --- 等价于 SQL 中的 or 关键字,比如 findByHei

SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增删改查分页)

前言 说起整合自然离不开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4.Mybatis3 项目结构 SSM整合 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu

关于双向链表的增删改查和排序的C++实现

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都构造双向循环链表. 由于双向链表可以方便地实现正序和逆序两个方向的插入.查找等功能,在很多算法中经常被使用, 这里用C++构造了一个双向链表,提供了对双向链表的插入.查找.删除节点.排序等功能,其中排序提供了插入排序和冒泡排序两种方式 #include<iostream> using namespace std;

PHP简单数据库操作类实例【支持增删改查及链式操作】

本文实例讲述了PHP简单数据库操作类.分享给大家供大家参考,具体如下: 在进行项目开发时,数据库是必不可少的东西了.但是很多时候却又对数据库SQL语句的繁杂而感到头疼.提供一个我自己使用的数据库操作类(模型Model),供大家使用.支持增.删.改.查,支持链式操作,代码不到100行,非常小巧方便,很适合小项目的快速部署使用. /** * * @Authot: summer * * @E-mail: wenghang1228@me.com * * @Data: 2015-02-06 * * @Pr

Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】

本文实例讲述了Thinkphp5.0框架的Db操作.分享给大家供大家参考,具体如下: 连接操作: <?php namespace app\index\controller; use think\Controller; use think\Db; class Index extends Controller { public function study_db(){ //方式一:默认读取配置文件的配置 $res = Db::connect(); //方式二:手动配置,使用一个数组 $res = D

JPA之使用JPQL语句进行增删改查

JPA支持两种表达查询的方法来检索实体和来自数据库的其他持久化数据:查询语句(Java Persistence Query Language,JPQL)和条件API(criteria API).JPQL是独立于数据库的查询语句,其用于操作逻辑上的实体模型而非物理的数据模型.条件API是根据实体模型构建查询条件 1.Java持久化查询语句入门 复制代码 代码如下: List<Person> persons= entityManager.createQuery("select p fro

thinkPHP数据库增删改查操作方法实例详解

本文实例讲述了thinkPHP数据库增删改查操作方法.分享给大家供大家参考,具体如下: thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化一个model对象 没有对应任何数据表 $insert_sql = "INSERT INTO sh_wxuser_collection (user_id,store_id,good_id,addtime) VAL

C#在winform中实现数据增删改查等功能

winform中利用ado.net实现对单表的增删改查的详细例子,具体如下: 1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等.  2.功能具体介绍: 1.首先,我们要先实现基本的数据操作,增删改查这几个操作. (1)先定义一个数据库操作的公共类: using System; using System.Collections.Generic; using System.Linq; using S

SpringBoot+MySQL+Jpa实现对数据库的增删改查和分页详解

一. 使用Springboot+Jpa实现对mysql数据库的增删改查和分页功能 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 使用Springboot和jpa对数据库进行操作时,能够大大减少我们的工作量,在jpa中,已经在底层封装好了增删查的功能和sql语句,可以使我们进行快速开发 二.项目过程和配置文件 1.applaction.properties文件配置