一个简单的前后端分离 CRUD Spring Boot 示例

2019-04-17 22:36:58 +08:00
 Allianzcortex

这是为一个课程设计做的项目,各种 CRUD 操作。自己当时在学 Spring Boot 的时候网上找到的实例总是太复杂或者太简单,这个相对来讲功能多一些。

代码链接: https://github.com/Allianzcortex/code_collection/tree/master/Spring-Boot-Based-Database-TeamProject

参考:

  1. 完全前后端分离,Spring 提供后端 json API,前端由纯 HTML+CSS+Jquery 组成
  2. 技术栈包括 Spring Boot + Spring MVC + Spring Data JPA ,其中 JPA 不负责生成数据库表(auto-ddl=none), 所有表由建表脚本构成,JPA 只起到映射作用.一些 JPA 无法完成的功能由 JDBC Template 执行查询
  3. 不包含外键,数据一致性由代码逻辑保证. transactionitems 的关系会保存在中间表 transaction_items

要求:

  1. Show table:要求输入一个表的名称,返回表的所有字段并展示。实际会返回数据库里的所有表并展示在一个下拉列表里
  2. Add New Article: 添加一个新的文章(包括 title/magazine/volume number/pages/authors),存在一些验证需求
  3. Add new Customer: 添加一个新的消费者(包括 lname/fname/phone number/mailing address)。如果存在同名情况 需要确认这是否是一个新的客户
  4. Add New Transaction: 添加一个新的交易(包括 customer ID 与 item 的 id 与 price)。其中会要求用户有一个 discount_code (折扣码)字段。用户最终交易需要支付的价格为:Sum*(1-2.5*DC/100),其中 DC 计算方法为:得到过去五年内该用户的消费记录,在 0-100 之间则 DC 为 0,在 100-200 之间则为 1,依此类推对消费额大于 500 的用户折扣码为 5
  5. Cancen Transaction: 输入 Transaction Number,如果该交易发生于一个月内则支持取消,删除所有与该次交易有关的信息(i.e. 删除 transactions 与 transaction_items 表的有关信息),并返回所有可以取消的交易

执行:

  1. 新建数据库并执行 existing_tables.sqlnew_tables.sql文件,创建数据表

  2. 修改 application.properties 里的配置变量

  3. a. 如果想通过源码执行,只需要导入 Intellij IDEA/Eclipse 后解析依赖并执行程序

    b. 如果想通过 jar 包执行,在命令行里输入 java -Dspring.config.location=application.properties -jar Application.jar

  4. 打开 index_html

示例:

e.g. 代码里如何找到发生在 5 年内的交易:

Date today = new Date();
Calendar cal = new GregorianCalendar();
cal.setTime(today);
//  get transactions nearly 5 years
cal.add(Calendar.YEAR, -5);
Date yearago5 = cal.getTime();
System.out.println(yearago5.getTime());

        List<Transaction> results = transactionRepository.findByCustomerIdAndTransactionDateAfter(
                customerId, yearago5);

public interface TransactionRepository extends JpaRepository<Transaction, Integer> {

    List<Transaction> findByCustomerIdAndTransactionDateAfter(Integer customerId, Date thirtyDaysAgoDate);
    }

部分截图:

1862 次点击
所在节点    分享创造
1 条回复
qfdk
2019-04-18 14:42:56 +08:00
jhispter 多好 逃~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/556199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX