- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章IDEA+maven+SpringBoot+JPA+Thymeleaf实现Crud及分页由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、开发环境:
1、windows 7 企业版 。
2、idea 14 。
3、jdk 1.8 。
4、maven 3.5.2 。
5、mariadb 。
6、sqlyog 。
2、maven设置:
maven目录下的conf目录下的settings.xml做如下内容的添加:
1、使用阿里云的仓库,比官网访问速度快很多 。
1
2
3
4
5
6
|
<mirror>
<id>nexus-aliyun</id>
<mirrorof>central</mirrorof>
<name>nexus aliyun</name>
<url>http:
//maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
|
2、全局jdk配置 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!-- 全局jdk配置,settings.xml -->
<profile>
<id>jdk18</id>
<activation>
<activebydefault>
true
</activebydefault>
<jdk>
1.8
</jdk>
</activation>
<properties>
<maven.compiler.source>
1.8
</maven.compiler.source>
<maven.compiler.target>
1.8
</maven.compiler.target>
<maven.compiler.compilerversion>
1.8
</maven.compiler.compilerversion>
</properties>
</profile>
|
3、idea基本设置:
1、maven设置:选择maven目录,同时配置文件和本地仓库 。
2、字符编码设置 。
4、使用idea创建maven工程:
选择enable auto-import,创建好的工程目录如下图:
5、体验springboot结合jpa的快速开发吧 。
1、pom.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<project xmlns=
"http://maven.apache.org/pom/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation=
"http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelversion>
4.0
.
0
</modelversion>
<groupid>cn.temptation</groupid>
<artifactid>studyspringboot</artifactid>
<version>
1.0
-snapshot</version>
<!-- 使用spring boot的默认设置 -->
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>
2.0
.
0
.release</version>
</parent>
<dependencies>
<!-- web -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<!-- thymeleaf -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-thymeleaf</artifactid>
</dependency>
<!-- mysql-->
<dependency>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
<version>
5.1
.
21
</version>
</dependency>
<!-- jpa-->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-data-jpa</artifactid>
</dependency>
</dependencies>
</project>
|
2、resources目录下新建application.properties(当然喜欢用yaml的可以用yaml) 。
1
2
3
4
5
6
7
|
# 数据库连接
spring.datasource.url=jdbc:mysql:
//127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=sa
spring.datasource.driver-
class
-name=com.mysql.jdbc.driver
# jpa配置
spring.jpa.properties.hibernate.hbm2ddl.auto=update
|
3、创建springboot程序启动类springbootapplication.java 。
1
2
3
4
5
6
7
8
9
10
11
12
|
package
cn.temptation;
import
org.springframework.boot.springapplication;
import
org.springframework.boot.autoconfigure.springbootapplication;
@springbootapplication
public
class
springbootapplication {
public
static
void
main(string[] args) {
// springboot项目启动
springapplication.run(springbootapplication.
class
, args);
}
}
|
4、创建实体类category.java 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package
cn.temptation.model;
import
javax.persistence.*;
// 建库建表
//drop table category;
//
//create table category
//(
// categoryid int auto_increment primary key,
// categoryname varchar(10) not null
//);
//
//insert into category values(null, '手机'), (null, '图书'), (null, '服装'), (null, '鞋帽');
//
//select * from category;
@entity
@table
(name =
"category"
)
public
class
category {
@id
@generatedvalue
(strategy = generationtype.identity)
@column
(name =
"categoryid"
)
private
integer categoryid;
@column
(name =
"categoryname"
)
private
string categoryname;
public
integer getcategoryid() {
return
categoryid;
}
public
void
setcategoryid(integer categoryid) {
this
.categoryid = categoryid;
}
public
string getcategoryname() {
return
categoryname;
}
public
void
setcategoryname(string categoryname) {
this
.categoryname = categoryname;
}
}
|
5、创建dao接口categorydao.java 。
1
2
3
4
5
|
package
cn.temptation.dao;
import
cn.temptation.model.category;
import
org.springframework.data.jpa.repository.jparepository;
public
interface
categorydao
extends
jparepository<category, integer> {
}
|
6、创建控制器类categorycontroller.java 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
package
cn.temptation.web;
import
cn.temptation.dao.categorydao;
import
cn.temptation.model.category;
import
org.springframework.beans.factory.annotation.autowired;
import
org.springframework.data.domain.page;
import
org.springframework.data.domain.pagerequest;
import
org.springframework.data.domain.pageable;
import
org.springframework.data.domain.sort;
import
org.springframework.stereotype.controller;
import
org.springframework.web.bind.annotation.requestmapping;
import
org.springframework.web.bind.annotation.requestparam;
import
org.springframework.web.servlet.modelandview;
import
java.util.list;
@controller
public
class
categorycontroller {
@autowired
private
categorydao categorydao;
/**
* 不分页查询
*
* @return
*/
// @requestmapping("/categorylist")
// public modelandview categorylist() {
// list<category> list = categorydao.findall();
//
// modelandview mav = new modelandview("categorylist");
// mav.addobject("list", list);
// return mav;
// }
/**
* 分页查询
*
* @return
*/
@requestmapping
(
"/categorylist"
)
public
modelandview categorylist(
@requestparam
(value =
"start"
, defaultvalue =
"0"
) integer start,
@requestparam
(value =
"limit"
, defaultvalue =
"2"
) integer limit) {
start = start <
0
?
0
: start;
sort sort =
new
sort(sort.default_direction,
"categoryid"
);
pageable pageable =
new
pagerequest(start, limit, sort);
page<category> page = categorydao.findall(pageable);
// system.out.println(page.getnumber());
// system.out.println(page.getnumberofelements());
// system.out.println(page.getsize());
// system.out.println(page.gettotalelements());
// system.out.println(page.gettotalpages());
// system.out.println(page.isfirst());
// system.out.println(page.islast());
modelandview mav =
new
modelandview(
"categorylist"
);
mav.addobject(
"page"
, page);
return
mav;
}
/**
* 类别新增视图
* @return
*/
@requestmapping
(
"/categoryinit"
)
public
string categoryinit() {
return
"categoryinit"
;
}
/**
* 类别新增操作
* @param model
* @return
*/
@requestmapping
(
"/categoryinsert"
)
public
string categoryinsert(category model) {
categorydao.save(model);
return
"redirect:categorylist"
;
}
/**
* 类别删除操作
* @param categoryid
* @return
*/
@requestmapping
(
"/categorydelete"
)
public
string categorydelete(integer categoryid) {
categorydao.deletebyid(categoryid);
return
"redirect:categorylist"
;
}
/**
* 类别编辑视图
* @param categoryid
* @return
*/
@requestmapping
(
"/categoryedit"
)
public
modelandview categoryedit(integer categoryid) {
category model = categorydao.getone(categoryid);
modelandview mav =
new
modelandview(
"categoryedit"
);
mav.addobject(
"category"
, model);
return
mav;
}
/**
* 类别编辑操作
* @param model
* @return
*/
@requestmapping
(
"/categoryupdate"
)
public
string categoryupdate(category model) {
categorydao.save(model);
return
"redirect:categorylist"
;
}
}
|
7、resources目录下新建templates目录,创建表现层:类别列表页面(categorylist.html)、类别新增页面(categoryinit.html)、类别编辑页面(categoryedit.html) 。
类别列表页面(categorylist.html) 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<!doctype html>
<html lang=
"en"
>
<head>
<meta charset=
"utf-8"
>
<title>类别列表</title>
<style>
table, th, td {
border: 1px solid green;
border-collapse: collapse;
}
</style>
</head>
<body>
<a th:href=
"@{/categoryinit}"
>新增</a>
<table>
<tr>
<th>类别编号</th>
<th>类别名称</th>
<th>操 作</th>
</tr>
<!--不分页遍历-->
<!--<tr th:each=
"item : ${list}"
>-->
<!--分页遍历-->
<tr th:each=
"item : ${page.content}"
>
<td th:text=
"${item.categoryid}"
>类别编号</td>
<td th:text=
"${item.categoryname}"
>类别名称</td>
<td>
<a th:href=
"@{/categoryedit(categoryid=${item.categoryid})}"
>编辑</a>
<a th:href=
"@{/categorydelete(categoryid=${item.categoryid})}"
>删除</a>
</td>
</tr>
</table>
<div>
<a th:href=
"@{/categorylist(start=0)}"
>[首页]</a>
<a th:
if
=
"${not page.isfirst()}"
th:href=
"@{/categorylist(start=${page.number-1})}"
>[上页]</a>
<a th:
if
=
"${not page.islast()}"
th:href=
"@{/categorylist(start=${page.number+1})}"
>[下页]</a>
<a th:href=
"@{/categorylist(start=${page.totalpages-1})}"
>[末页]</a>
</div>
</body>
</html>
|
类别新增页面(categoryinit.html) 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!doctype html>
<html lang=
"en"
>
<head>
<meta charset=
"utf-8"
>
<title>类别新增</title>
</head>
<body>
<form action=
"categoryinsert"
method=
"post"
>
<label
for
=
"txtcategoryname"
>类别名称:</label>
<input type=
"text"
id=
"txtcategoryname"
name=
"categoryname"
/><br/>
<input type=
"submit"
value=
"提交"
>
</form>
</body>
</html>
|
类别编辑页面(categoryedit.html) 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!doctype html>
<html lang=
"en"
>
<head>
<meta charset=
"utf-8"
>
<title>类别编辑</title>
</head>
<body>
<form action=
"categoryupdate"
method=
"post"
>
<input type=
"hidden"
id=
"txtcategoryid"
name=
"categoryid"
th:field=
"${category.categoryid}"
/><br/>
<label
for
=
"txtcategoryname"
>类别名称:</label>
<input type=
"text"
id=
"txtcategoryname"
name=
"categoryname"
th:field=
"${category.categoryname}"
/><br/>
<input type=
"submit"
value=
"提交"
>
</form>
</body>
</html>
|
6、启动项目,运行效果如下 。
总结 。
以上所述是小编给大家介绍的idea+maven+springboot+jpa+thymeleaf实现crud及分页,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:https://www.cnblogs.com/iflytek/p/8526182.html 。
最后此篇关于IDEA+maven+SpringBoot+JPA+Thymeleaf实现Crud及分页的文章就讲到这里了,如果你想了解更多关于IDEA+maven+SpringBoot+JPA+Thymeleaf实现Crud及分页的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
问题:如何对文本文字中的多个连续下划线进行转义? 我正在为 HTML 使用标准的 Thymeleaf 方言(我不在这里使用 Spring 或 SpEL)。 在 Thymeleaf 中,我可以将下划线创
在 SaaS 应用程序中,我使用了一些模板来生成通知电子邮件或某些 HTML 页面。到目前为止,我没有使用 thymeleaf,而且所有模板都是硬编码的,但我很想改变它,以便应用程序的用户可以自己编辑
我看到JSP页面有.jsp/.jspf/.jspx后缀(来自 JavaServer Pages™ Specification Version2.2),Velocity 模板使用 .vm后缀,FreeM
我有一个像这样的 Thymeleaf 片段 ... 脚本部分我只想包含它一次,即使我会在页面中多次包含 f1 。实现这一目标最简单/最干净的方法是什么? 我什至可以将此片段拆
两个 Thymeleaf 属性有什么区别:th:include 和 th:replace? 最佳答案 根据documentation如果您遇到这种情况: content here 片段将被放置在
我是 Thymeleaf 初学者。我从一个通用布局页面开始: fragments/layout.html Template title Some text
我有两个数组,我想在同一个表(不同的列)中显示其内容。如何使用 index 或 th:each 遍历数组 这是我想要实现的目标 List1Elm1 List
我在 session 中有一个对象,例如一个部门,这个部门有 child 。我得到了它的 child 的列表,现在我想在这个列表中添加这个部门对象。这在服务器端非常简单,但可以做到这个在 thymel
我的 Thymeleaf 页面中有几个下拉列表,如下所示: 当我查看页面时,列表中的第一个值显示为已选中,并且实际上已作为选中值提交,即使它不是手动选中的。我宁愿默认不选择任
我有一个通用的布局,默认情况下,除已包含(更高级的)搜索表单的搜索页面本身之外,每个页面上均应显示(基本)搜索表单。 是否可以将参数从我的搜索页面传递到版式,以便不显示默认搜索表单? 这是我想做的一个
我有一个 User 对象列表,我想将它转换为一个名称列表,加入它并呈现它(不是在表格中)。我该怎么做? class User { String name; String address; }
我在前端使用thymeleaf,我知道variable中的thymeleaf概念 如果我使用th:text,变量中的值将被打印,并且我可以在同一元素中使用该变量。有没有办法在其他元素中使用var呢?
我知道 Thymeleaf 是为渲染 View 而制作的,但是我只是想知道是否有任何方法可以在 Thymeleaf 片段的请求范围内设置变量? 我有一个非常大的条件表达式,我必须在整个应用程序中重复很
假设我有两个 Thymeleaf 模板: index.html : foo bar 片段/main.html : This is the main cont
我想声明一些布局用作所有表单字段的模板。 大致给出这个片段 Edition description 这个片段“调用” 它将产生
在 Thymeleaf 中实现 Markdown 的最佳方式是什么? 模板模式 一种新的方言(什么处理器?) 如果我可以在 HTML 中嵌入 markdown,那将会很有用。 最佳答案 根据我对 Ja
我想使用模板片段创建最多包含三个项目的列表。无论是否有项目,项目都会显示三个空格,因此看起来像这样。 0}" th:insert="code-block :: block(${bloc
如何从 Thymeleaf 重定向页面(我有如下 JSP 代码) out.println("REDIRECT=http://www.example.com/api/response?id="+id)
我想在 Thymeleaf 的字符串中放置双引号,我有以下形式: 我想要的结果是: Value of "apple" is "1.5". 但我得到以下异常: EL1065E: unexpected
我想使用模板片段创建最多包含三个项目的列表。无论是否有项目,项目都会显示三个空格,因此看起来像这样。 0}" th:insert="code-block :: block(${bloc
我是一名优秀的程序员,十分优秀!