SpringDataJpa使用示例

本文档详细介绍了SpringData JPA的工作原理及其在查询和修改操作中的应用,并通过实例展示了Datagrid的使用方法,包括分页查询、条件查询等功能实现。

主要讲解四点:

1、SpringDataJpa原理及查询和修改操作(理解原理,能说出来,会用)

2、datagrid使用及分析(会用)

3、收派标准分页列表查询实现及修改功能(重点)

4、快递员添加、分页列表查询、Specification实现分页列表带条件查询(重点)

一、SpringDataJpa原理分析和基本API(重点)

1、Spring Data    

Spring Data 出现就是为了简化、统一持久层的各种实现技术API

Spring Data 提供一套标准API和不同持久层整合技术实现

2、spring-data-commons与spring-data-jpa

spring-data-commons 一套标准API

spring-data-jpa 基于整合jpa实现

自己开发Repository只需要继承JpaRepository接口

CrudRepository

save、delete、deleteAll、findAll、findOne、count

PagingAndSortingRepository

findAll(Sort) 基于排序的查询、findAll(Pageable)基于分页的查询

二、SpringDataJpa查询Query的使用(会用)

第一种:根据方法命名规则自动生成

基于一列等值查询 findBy列名 例如:findByName(String name)

// 根据收派标准名称查询

public List<Standard> findByName(String name);

基于一列模糊查询findBy列名Like 例如:findByNameLike(String name)

基于两列等值查询findBy列名And列名 例如:findByUsernameAndPassword(String username,String password)

第二种:不按命名规则写的查询方法,可以配置@Query绑定JPQL语句或者SQL语句

@Query(value="from Standard where name = ?" ,nativeQuery=false)

    // nativeQuery 为 false 配置JPQL,在这里其实就是写HQL 、 为true 配置SQL

    public List<Standard> queryName(String name);

第三种:不按命名规则写的查询方法,配置@Query,没写语句,实体类@NamedQuery定义

@Query

    public List<Standard> queryName2(String name);

@NamedQueries({

    @NamedQuery(name="Standard.queryName2",query="from Standard where name=?")

})

三、SpringDataJpa修改操作Query使用(会用)

@Query注解完成,搭配使用@Modifying标记修改、删除操作

@Query(value="update Standard set min·Length=?2 where id =?1")问号后数代表参数占位符

@Modifying

publicvoid updateMinLength(Integer id , Integer minLength);

Junit单元测试,要添加事务,设置事务不回滚

@Test

@Transactional

@Rollback(false)

publicvoid testUpdate(){

standardRepository.updateMinLength(1, 3);

}

四、数据表格datagrid简单使用(会用)

1、table指定id="grid"

2、$("#grid").datagrid({…}); 完成对表格设置    

columns:表格列定义

url:远程数据加载

pagination:true显示分页栏datagrid底        

toolbar:顶部工具栏

参照10.html

五、数据表格datagrid分页原理分析(理解)

page size

请求数据:page页码、rows每页记录数(每页显示几条数据)

响应数据:total:总记录数、rows当前页数据记录

  1. 收派标准分页列表查询实现(能实现)

  1. 修改standard.html数据表格url参数

2、在StandardAction添加pageQuery方法,页面会自动发送两个请求参数page页码和 rows每页记录数

Action代码:

pom.xml导入json插件

业务层代码

实现代码

Spring data jpa提供分页查询方法,接受Pageable参数

Spring data提供PageRequest对象实现Pageable接口

注意PageRequest的page页面从0开始所以要page-1

七、收派标准修改功能实现(能实现)

1、点击修改按钮,获取datagrid选中的一行数据

2、将选中数据回显form表单

使用jquery easyui 提供form对象

提供隐藏字段 (id隐藏,用于传参数)

八、第三天主要内容概述

1、快递员管理,依赖收派标准选择(多表关联插入)

2、快递员分页列表查询

3、区域批量数据导入 Excel读写工具 Apache POI、文件上传

4、基于条件分页查询功能实现Spring Data JPA 条件分页查询

九、添加快递员加载收派标准列表(能实现)

1、快递员管理功能介绍

快递员添加功能思路:

1)jQuery Easyui Window窗口

2)jQuery Easyui form 客户端表单验证

3)Spring Data JPA 提供save方法

2、收派标准列表显示

1)input控件

url获取列表数据、textField 显示内容字段名、valueField生成选项value属性依据字段名

2)编写StandardAction提供findAll方法

3)编写业务层方法

十、添加快递员服务器功能实现(能实现)

快递员添加功能(多表操作)介绍

  1. 检验表单的输入元素name字段是否与实体类属性字段一致
  2. 需要对快递员添加表单,设置action和method

3、使用jQuery easyui的form校验功能

  1. 编写CourierAction添加save方法

  2. 编写业务层代码实现

6、编写DAO业务接口

十一、快递员无条件分页查询实现(能实现)

  1. 实现思路:

    1)datagrid在页面加载后,会自动向url地址发送一次请求

    传递参数page当前页码和rows每页显示的记录数到服务器

    1. spring data提供Pageable对象(PageRequest)接收两个参数
    2.     调用spring data中Page findAll(Pageable)方法查询总记录数和当前页数据

        4)将Page中数据封装自定义Map集合total和rows转换json返回客户端

2、实现步骤:

        1)修改courier.html中的datagrid url地址

        2)编写CourierAction中的pageQuery方法

        

        3)编写业务层实现

分析:需不需要加载集合对象,@JSON注解排除不需要加载属性

十二、快递员条件分页查询请求参数提交(能实现)

1、制作查询按钮,点击按钮显示快递员查询表单(窗口)

2、将查询窗口条件,绑定到数据表格上,让数据表格在发送请求时,自动携带条件

查询jquery easyui datagrid 数据表格api

1)先将页面form表单数据,转换{key:value,key:value}格式

查看jquery

2)基于自定义方法,完成将form参数转换为json绑定到datagrid上

3)查询条件和分页查询参数一起发送给服务器端

十三、使用Specification实现条件分页查询(能实现)

思路:

  1. 获取请求参数
  2. 封装在Java类 Predicate
  3. 拼凑成SQL语句 select * from my_table where name=? and age=? and …
  4. 定义Java类封装请求参数的规则,表达式

3、修改CourierAction的pageQuery方法,添加条件查询逻辑操作        

4、修改Service代码

实现

5、修改DAO接口,继承JpaSpecificationExecutor接口

JpaSpecificationExecutor接口

Specification接口对象:条件查询对象

Pageable接口对象:代表分页查询对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值