SpringBoot 急速构建项目,真的是用了才知道,搭配JPA作为持久层,一简到底!
下面记录项目的搭建,后续会添加NOSQL redis,搜索引擎elasticSearch,等等,什么不过时就加什么。

开发工具idea、项目构建gradle、模板引擎thymeleaf

项目构建

1.【new】 -> 【product】 -> 选择Spring Initializr -> 【next】

2.填写Group,Artifact,Type ->【next】

3.导包

  1. 1.左边选择Web右边勾选Web
    2.左边选择SQL右边勾选JPA
    3.左边选择SQL右边勾选mysql
    4.左边选择Template Engines右边勾选Thymeleaf
    5.【next】->【finish】


好了
现在的项目结构

BootjpaApplication 是项目的启动类
resources/templates/ 文件夹是放页面的
build.gradle 存放jar包坐标

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update

@RestController

配置完成,写个controller试试看

@RestController
public class HelloBootController { @RequestMapping("helloBoot")
public String helloBoot(){
return "Hello Boot-JPA";
}
}

在BootjpaApplication文件上启动

@RestController注解,代替@Controller+@@ResponseBody
那么返回页面就直接用@Controller就好了

现在JPA登场


db

注解和hibernate一样。

@Entity
public class User { private long id;
private String name;
private String passWord;
private String email; @Id
@GeneratedValue
public long getId() {
return id;
}
。。。。。
}

现在,就是见证奇迹的时刻!

dao

dao层继承JpaRepository即可

public interface UserRepository extends JpaRepository<User,Long> {
}

什么!这就完了??对,低调

controller

controller层,service层跳过。

@Controller
public class HelloBootController { @Autowired
UserRepository userRepository; @RequestMapping("/toHello")
public String toHello(ModelMap modelMap){
userRepository.save(new User("Mshu","123456","zhuiqiu95@foxmail.com"));
List<User> users = userRepository.findAll();
modelMap.put("users",users);
return "helloBoot";
}
}

thymeleaf


至于页面,默认是在resources/templates/下的html,试图解析器已经配置默认配置好的。

前缀:resources/templates/
后缀:html

那我们就在resources/templates/下新建一个html页面
注意<html xmlns:th="http://www.thymeleaf.org " lang="en">引入thymeleaf
用到了thymeleaf语法遍历。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <table >
<tr th:each="user,userState : ${users}">
<td style="border: 1px solid seagreen" th:text="${user.name}"></td>
<td style="border: 1px solid seagreen" th:text="${user.passWord}"></td>
<td style="border: 1px solid seagreen" th:text="${user.email}"></td>
</tr>
</table>
</body>
</html>

启动,输入地址,回车!

精彩回顾

刚刚dao层明明只写了一个接口没有写任何方法,怎么就能调用save(),findAll()呢,
对JPA默认了许多基础增删改查方法,直接调用即可。
怎么写除了默认给出的方法以外怎么写呢,

public interface UserRepository extends JpaRepository<User,Long> {
User findByName(String name);
}

调用的话直接

User user = userRepository.findByName("Mshu");

那么怎么做的映射的,它怎么知道我的参数name对应表里的name,原来名字一样就可以映射,好像很有道理
没错就那么简单,这种写法太hibernate了。

本文转载于猿2048:简单才是美! SpringBoot+JPA

简单才是美! SpringBoot+JPA的更多相关文章

  1. 难部署的taiga,式微的circus——趋势从进程管理到容器管理,简单才是美

    一直需要一个项目管理系统,一直没时间弄. taiga是github上搜project management star最多的项目,又是基于django用python写的后端,所以就用它: 但是,集中精力 ...

  2. 补习系列(19)-springboot JPA + PostGreSQL

    目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...

  3. 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础授权权限

    上一篇<[原]无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限>介绍了实现Shiro的基础认证.本篇谈谈实现 ...

  4. 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限

    开发环境搭建参见<[原]无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页> 需求: ① 除了登录页面,在地址栏直接访问其他 ...

  5. 带着新人学springboot的应用08(springboot+jpa的整合)

    这一节的内容比较简单,是springboot和jpa的简单整合,jpa默认使用hibernate,所以本质就是springboot和hibernate的整合. 说实话,听别人都说spring data ...

  6. SpringBoot JPA + H2增删改查示例

    下面的例子是基于SpringBoot JPA以及H2数据库来实现的,下面就开始搭建项目吧. 首先看下项目的整体结构: 具体操作步骤: 打开IDEA,创建一个新的Spring Initializr项目, ...

  7. SpringBoot JPA 中无法注入 JpaRepository 接口的问题及解决方案

    错误: 在Springboot  框架中使用JPA的过程中,怎么来实现数据库操作底层的交互呢?Spring JPA其实已经提供了一套很全面的解决方案,实现对数据库的增.删.查.改只需要继承JPA实现类 ...

  8. SpringBoot JPA懒加载异常 - com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy

    问题与分析 某日忽然发现在用postman测试数据时报错如下: com.fasterxml.jackson.databind.JsonMappingException: could not initi ...

  9. IDEA SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统

    先放上github地址:spike-system,可以直接下载完整项目运行测试 SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统 技术栈:SpringBoot, MyS ...

随机推荐

  1. QUIC协议详解

    声明 本文可以自由转载但需注明原始链接.本文为本人原创,作者LightningStar,原文发表在博客园.本文主体内容参考论文[1]完成. 介绍 QUIC,发音同quick,是"Quick ...

  2. JZ-013-调整数组顺序使奇数位于偶数前面

    调整数组顺序使奇数位于偶数前面 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对 ...

  3. 快速整透Redis中的压缩列表到底是个啥

    压缩列表简介 压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构.一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值.它是Redis为了节省内存空间而开发的. 压缩列 ...

  4. tp5手机号验证码发送及验证

    原文链接:https://blog.csdn.net/weixin_43389208/article/details/119153323 为什么使用短信: 场景:通常在使用手机号注册时需要发送短信验证 ...

  5. php 23种设计模型 - 组合模式(合成模式)

    组合模式(Composite) 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这 ...

  6. js开发文档生成工具jsdoc安装使用

    1.全局安装jsdoc,需要先安装node环境哦~ npm install -g jsdoc 2.在项目根目录新建文件conf.json,内容如下: { "tags": { &qu ...

  7. 除非Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站。

    解决办法: 打开WINDOWS服务管理方法: 进入服务有二种方法: 1.开始-控制面板-管理工具单击,找到"服务"双击打开 在WINDOWS服务管理里 启动 World Wide ...

  8. ssm 关于mybatis启动报Result Maps collection already contains value for ...的问题总结

    Result Maps collection already contains value for com.zhaike.mapping.ChapterMapper.BaseResultMap Err ...

  9. 深度学习工具LabelXml安装教程

    LabelXml安装教程 1,下载LabelXml工具 前往github上下载labelxml,官网地址如下:https://github.com/tzutalin/labelImg 下载打包源码为z ...

  10. 用strace处理程序异常挂死情况

    1. 环境: ubuntu 系统 + strace + vim 2.编写挂死程序:(参考博客) #include <stdio.h> #include <sys/types.h> ...