主要讲解四点:
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当前页数据记录
-
收派标准分页列表查询实现(能实现)
-
修改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)编写业务层方法
十、添加快递员服务器功能实现(能实现)
快递员添加功能(多表操作)介绍
-
检验表单的输入元素name字段是否与实体类属性字段一致
-
需要对快递员添加表单,设置action和method
3、使用jQuery easyui的form校验功能
-
编写CourierAction添加save方法
-
编写业务层代码实现
6、编写DAO业务接口
十一、快递员无条件分页查询实现(能实现)
-
实现思路:
1)datagrid在页面加载后,会自动向url地址发送一次请求
传递参数page当前页码和rows每页显示的记录数到服务器
-
spring data提供Pageable对象(PageRequest)接收两个参数
-
调用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实现条件分页查询(能实现)
思路:
-
获取请求参数
-
封装在Java类 Predicate
-
拼凑成SQL语句 select * from my_table where name=? and age=? and …
-
定义Java类封装请求参数的规则,表达式
3、修改CourierAction的pageQuery方法,添加条件查询逻辑操作
4、修改Service代码
实现
5、修改DAO接口,继承JpaSpecificationExecutor接口
JpaSpecificationExecutor接口
Specification接口对象:条件查询对象
Pageable接口对象:代表分页查询对象