五福商城项目总结

一、SpringDataJPA

  • SpringDataJpa概念:
    它是JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL的查询语句 ,是属于Spring的生成体系中的一部分。
  1. 在applicationcontext.xml中配置springDataJpa的信息
  2. 实现JpaRepository接口后的基本功能
    (1)普通的CRUD
    (2)分页排序功能
    (3)根据条件进行查询:规范创建查询方法,一般按照java驼峰式书写规范加一些特定关键字
    (4)@Query注解查询:在Respository方法中一定要按照查询方法的命名规则,其实是比较麻烦的如果我们想不遵循 查询方法的命名规则,还可以使用@Query的方法进行查询。使用时将@Query定义在Respository的方法之上。
  3. 接口JpaSpecificationExecutor的认识
    JPA规则执行者,用于动态生成Query来满足我们业务中的各种复杂场景。所有查询都要求传入一个Specification对象。
  • 接口JpaSpecificationExecutor的方法
public interface JpaSpecificationExecutor<T> {
   T findOne(Specification<T> spec);
   List<T> findAll(Specification<T> spec);
   Page<T> findAll(Specification<T> spec, Pageable pageable);
   List<T> findAll(Specification<T> spec, Sort sort);
   long count(Specification<T> spec);
}
  • 要使用这个接口中的方法,首先让我们的接口也去继承这个接口
public interface EmployeeRepository extends JpaRepository<Employee,Long>,JpaSpecificationExecutor<Employee> {
}
  • 可以进行单条件、多条件和条件查询+分页排序功能,注意都要传入一个Specification对象。
  1. jpa-spec插件
    动态生成Query功能的一个封装版,完成查询与分页会很简便。
  • 功能
    兼容Spring Data Jpa 和JPA2.1接口。
    Equal/NotEqual/Like/NotLike/In/NotIn支持可变参数,Equal/NotEqual 支持空(Null)值。
    每个条件支持关联查询。
    支持自定义条件查询。
    条件构建器。
    支持分页和排序。
  • 在pom.xml中引入相应的jar包
  • 多条件查询
@Test
public void testSpecFind02() {
    Specification<Employee> spec = Specifications.<Employee>and().like("username", "%1%")
            .like("email","%2%").lt("age", 20).build();
    List<Employee> emps = employeeRepository.findAll(spec);
    for (Employee emp : emps) {
        System.out.println(emp);
    }
}
  1. Query查询条件
    就是接收前台传过来的值
  • 用户传的数据有0-n个(我们需要去判断)
  • 咱们必需要准备一个对象接收用户传过来的数据(使用Query对象)
  • 分页的条件对我们来说也是封装到Query对象中的

二、五福商城项目中主要使用到的技术。

  • 三大框架集成。
    spring+springvc+springdatajpa
  • 主要使用到的技术点:
    jquery、easyui,highcharts、shiro安全权限框架、velocity、poi(easypoi)、easycoder 等等还有一些小的知识。
  • 项目开发设计到的人数。
    整个项目是一共6个人开发。其中1个美工,2个前端,2个后台,1个测试,总共花了将近4个月的时间。
  • 我主要负责的是后台的核心业务模块,基础模块方面也有一点涉及。其中最主要的是库存这一模块。
    采购入库单(数据增加),销售出库单(数据减少),退货单,换货单、调货单、报损报溢、盘点单
    退货单:我们退给供应商(减少),用户退给我们(增加)
    换货单:即会增加也会减少
    调货单(调拨单):从一个仓库到另一个仓库(增加减少)
    报损单:货品出问题
    报溢单:库存中商品变多了
    盘点单:清货(周期性)->全盘、抽盘功能。添加盘点单(抽盘还要选择条件)->(确定)生成盘盈盘亏单,->审核:抽盘根据条件进行判断,修改系统中仓库的有错误的产品数,并生成一张excel表做留底。
  • 在做的时候还是遇到不少的麻烦,最主要的是在盘点方面。可能当时对这方面的业务不是很了解。
  • 主要遇到的困难有:
    (1) 数据丢失问题:
    修改保存的时候,密码和头像数据会丢失。
    主要是利用springMVC框架帮我们解决。通过id拿到数据库中员工的值,然后将前台传过来的值进行设置覆盖。字段改变了的就设置后覆盖原来的数据,没有改变的就不管。
    注解@ModelAttribute(“名字随便”)
    作用:在执行任何一个路径(方法)之前,都会先来执行这个方法
    (2)点击修改部门时,报n-To-n的错误
    原因:我们修改了一个持久化对象的id。
    凡是要传过来的关联对象,都把它清空.解决N-TO-N问题

猜你喜欢

转载自blog.csdn.net/Abdullahi_kanye/article/details/88936622