【原】无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页

一、开发环境:

1、windows 7 企业版

2、IDEA 14

3、JDK 1.8

4、Maven 3.5.2

5、MariaDB

6、SQLYog

二、Maven设置:

Maven目录下的conf目录下的settings.xml做如下内容的添加:

1、使用阿里云的仓库,比官网访问速度快很多

1 
2 nexus-aliyun
3 central
4 Nexus aliyun
5 http://maven.aliyun.com/nexus/content/groups/public
6 

2、全局JDK配置

 1   
 2     
 3     jdk18    
 4         
 5         true    
 6         1.8    
 7         
 8         
 9         1.8    
10         1.8    
11         1.8    
12          
13 

三、IDEA基本设置:

1、Maven设置:选择Maven目录,同时配置文件和本地仓库

2、字符编码设置

四、使用IDEA创建Maven工程:

选择Enable Auto-Import,创建好的工程目录如下图:

五、体验SpringBoot结合JPA的快速开发吧

1、pom.xml

 1 
 2 
 5     4.0.0
 6 
 7     cn.temptation
 8     studySpringBoot
 9     1.0-SNAPSHOT
10 
11     
12     
13         org.springframework.boot
14         spring-boot-starter-parent
15         2.0.0.RELEASE
16     
17 
18     
19         
20         
21             org.springframework.boot
22             spring-boot-starter-web
23         
24         
25         
26             org.springframework.boot
27             spring-boot-starter-thymeleaf
28         
29         
30         
31             mysql
32             mysql-connector-java
33             5.1.21
34         
35         
36         
37             org.springframework.boot
38             spring-boot-starter-data-jpa
39         
40     
41 

2、resources目录下新建application.properties(当然喜欢用yaml的可以用yaml)

1 # 数据库连接
2 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
3 spring.datasource.username=root
4 spring.datasource.password=sa
5 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
6 
7 # JPA配置
8 spring.jpa.properties.hibernate.hbm2ddl.auto=update

3、创建SpringBoot程序启动类SpringbootApplication.java

 1 package cn.temptation;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 @SpringBootApplication
 7 public class SpringbootApplication {
 8     public static void main(String[] args) {
 9         // SpringBoot项目启动
10         SpringApplication.run(SpringbootApplication.class, args);
11     }
12 }

4、创建实体类Category.java

 1 package cn.temptation.model;
 2 
 3 import javax.persistence.*;
 4 
 5 // 建库建表
 6 //DROP TABLE category;
 7 //
 8 //CREATE TABLE category
 9 //(
10 //    categoryid INT AUTO_INCREMENT PRIMARY KEY,
11 //    categoryname VARCHAR(10) NOT NULL
12 //);
13 //
14 //INSERT INTO category VALUES(NULL, '手机'), (NULL, '图书'), (NULL, '服装'), (NULL, '鞋帽');
15 //
16 //SELECT * FROM category;
17 @Entity
18 @Table(name = "category")
19 public class Category {
20     @Id
21     @GeneratedValue(strategy = GenerationType.IDENTITY)
22     @Column(name = "categoryid")
23     private Integer categoryid;
24 
25     @Column(name = "categoryname")
26     private String categoryname;
27 
28     public Integer getCategoryid() {
29         return categoryid;
30     }
31 
32     public void setCategoryid(Integer categoryid) {
33         this.categoryid = categoryid;
34     }
35 
36     public String getCategoryname() {
37         return categoryname;
38     }
39 
40     public void setCategoryname(String categoryname) {
41         this.categoryname = categoryname;
42     }
43 }

5、创建DAO接口CategoryDao.java

1 package cn.temptation.dao;
2 
3 import cn.temptation.model.Category;
4 import org.springframework.data.jpa.repository.JpaRepository;
5 
6 public interface CategoryDao extends JpaRepository {
7 
8 }

6、创建控制器类CategoryController.java

  1 package cn.temptation.web;
  2 
  3 import cn.temptation.dao.CategoryDao;
  4 import cn.temptation.model.Category;
  5 import org.springframework.beans.factory.annotation.Autowired;
  6 import org.springframework.data.domain.Page;
  7 import org.springframework.data.domain.PageRequest;
  8 import org.springframework.data.domain.Pageable;
  9 import org.springframework.data.domain.Sort;
 10 import org.springframework.stereotype.Controller;
 11 import org.springframework.web.bind.annotation.RequestMapping;
 12 import org.springframework.web.bind.annotation.RequestParam;
 13 import org.springframework.web.servlet.ModelAndView;
 14 
 15 import java.util.List;
 16 
 17 @Controller
 18 public class CategoryController {
 19     @Autowired
 20     private CategoryDao categoryDao;
 21 
 22     /**
 23      * 不分页查询
 24      *
 25      * @return
 26      */
 27 //    @RequestMapping("/categorylist")
 28 //    public ModelAndView categorylist() {
 29 //        List list = categoryDao.findAll();
 30 //
 31 //        ModelAndView mav = new ModelAndView("categorylist");
 32 //        mav.addObject("list", list);
 33 //        return mav;
 34 //    }
 35 
 36     /**
 37      * 分页查询
 38      *
 39      * @return
 40      */
 41     @RequestMapping("/categorylist")
 42     public ModelAndView categorylist(@RequestParam(value = "start", defaultValue = "0") Integer start,
 43                                      @RequestParam(value = "limit", defaultValue = "2") Integer limit) {
 44         start = start < 0 ? 0 : start;
 45 
 46         Sort sort = new Sort(Sort.DEFAULT_DIRECTION, "categoryid");
 47         Pageable pageable = new PageRequest(start, limit, sort);
 48         Page page = categoryDao.findAll(pageable);
 49 
 50 //        System.out.println(page.getNumber());
 51 //        System.out.println(page.getNumberOfElements());
 52 //        System.out.println(page.getSize());
 53 //        System.out.println(page.getTotalElements());
 54 //        System.out.println(page.getTotalPages());
 55 //        System.out.println(page.isFirst());
 56 //        System.out.println(page.isLast());
 57 
 58         ModelAndView mav = new ModelAndView("categorylist");
 59         mav.addObject("page", page);
 60         return mav;
 61     }
 62 
 63     /**
 64      * 类别新增视图
 65      * @return
 66      */
 67     @RequestMapping("/categoryinit")
 68     public String categoryinit() {
 69         return "categoryinit";
 70     }
 71 
 72     /**
 73      * 类别新增操作
 74      * @param model
 75      * @return
 76      */
 77     @RequestMapping("/categoryinsert")
 78     public String categoryinsert(Category model) {
 79         categoryDao.save(model);
 80         return "redirect:categorylist";
 81     }
 82 
 83     /**
 84      * 类别删除操作
 85      * @param categoryid
 86      * @return
 87      */
 88     @RequestMapping("/categorydelete")
 89     public String categorydelete(Integer categoryid) {
 90         categoryDao.deleteById(categoryid);
 91         return "redirect:categorylist";
 92     }
 93 
 94     /**
 95      * 类别编辑视图
 96      * @param categoryid
 97      * @return
 98      */
 99     @RequestMapping("/categoryedit")
100     public ModelAndView categoryedit(Integer categoryid) {
101         Category model = categoryDao.getOne(categoryid);
102 
103         ModelAndView mav = new ModelAndView("categoryedit");
104         mav.addObject("category", model);
105         return mav;
106     }
107 
108     /**
109      * 类别编辑操作
110      * @param model
111      * @return
112      */
113     @RequestMapping("/categoryupdate")
114     public String categoryupdate(Category model) {
115         categoryDao.save(model);
116         return "redirect:categorylist";
117     }
118 }

7、resources目录下新建templates目录,创建表现层:类别列表页面(categorylist.html)、类别新增页面(categoryinit.html)、类别编辑页面(categoryedit.html)

类别列表页面(categorylist.html)

 1 
 2 
 3 
 4     
 5     类别列表
 6     
 7         table, th, td {
 8             border: 1px solid green;
 9             border-collapse: collapse;
10         }
11     
12 
13 
14 新增
15 
16     
17         
18         
19         
20     
21     
22     <!---->
23     
24     
25         
26         
27         
31     
32 
类别编号类别名称操 作
类别编号类别名称 28 编辑 29 删除 30
33 39 40

类别新增页面(categoryinit.html)

 1 
 2 
 3 
 4     
 5     类别新增
 6 
 7 
 8 
9 10
11 12
13 14

类别编辑页面(categoryedit.html)

 1 
 2 
 3 
 4     
 5     类别编辑
 6 
 7 
 8 
9
10 11
12 13
14 15

六、启动项目,运行效果如下

您可能感兴趣的

JPA链接MySQL时警告(WARN: Establishing SSL connection wi... WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requiremen...
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)... 当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异。笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方案,希望这个系列能够给小伙伴一些帮助。本系列文章并不是手把手的教程,主要介绍了核心思路并讲解了核心代...
J2Cache 2.3.18 发布,这一次是 Spring Boot 的锅... 嗯,我又发布新版本了,我不知道该版本解决的问题算是 Bug 还是一个 Feature ! 某些用户是在 Spring Boot 中使用 J2Cache 框架,当启用 devtool 的时候会导致从缓存读取数据的时候出现 ClassCastException 异常,而一旦关闭 devtoo...
Spring Boot神器之Spring Date Jpa 一、Spring Date Jpa介绍 什么是JPA? JPA是Java Persistence API的简称,中文名Java持久层API,是JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 Sun引入新的JPAORM规范出于两个原因: ...
Quick tip: Front end frameworks and Maven dependen... Lately I am only building application with Spring Boot, where I use Thymeleaf front end templating engine. A very powerful combination, but someti...
博客园精华区责编内容来自:博客园精华区 (源链) | 更多关于

阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 【原】无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页



专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录