简单才是美! SpringBoot+JPA
SpringBoot 急速构建项目,真的是用了才知道,搭配JPA作为持久层,一简到底!
下面记录项目的搭建,后续会添加NOSQL redis,搜索引擎elasticSearch,等等,什么不过时就加什么。
开发工具idea、项目构建gradle、模板引擎thymeleaf
项目构建
1.【new】 -> 【product】 -> 选择Spring Initializr -> 【next】
2.填写Group,Artifact,Type ->【next】
3.导包
- 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的更多相关文章
- 难部署的taiga,式微的circus——趋势从进程管理到容器管理,简单才是美
一直需要一个项目管理系统,一直没时间弄. taiga是github上搜project management star最多的项目,又是基于django用python写的后端,所以就用它: 但是,集中精力 ...
- 补习系列(19)-springboot JPA + PostGreSQL
目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...
- 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础授权权限
上一篇<[原]无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限>介绍了实现Shiro的基础认证.本篇谈谈实现 ...
- 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限
开发环境搭建参见<[原]无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页> 需求: ① 除了登录页面,在地址栏直接访问其他 ...
- 带着新人学springboot的应用08(springboot+jpa的整合)
这一节的内容比较简单,是springboot和jpa的简单整合,jpa默认使用hibernate,所以本质就是springboot和hibernate的整合. 说实话,听别人都说spring data ...
- SpringBoot JPA + H2增删改查示例
下面的例子是基于SpringBoot JPA以及H2数据库来实现的,下面就开始搭建项目吧. 首先看下项目的整体结构: 具体操作步骤: 打开IDEA,创建一个新的Spring Initializr项目, ...
- SpringBoot JPA 中无法注入 JpaRepository 接口的问题及解决方案
错误: 在Springboot 框架中使用JPA的过程中,怎么来实现数据库操作底层的交互呢?Spring JPA其实已经提供了一套很全面的解决方案,实现对数据库的增.删.查.改只需要继承JPA实现类 ...
- SpringBoot JPA懒加载异常 - com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy
问题与分析 某日忽然发现在用postman测试数据时报错如下: com.fasterxml.jackson.databind.JsonMappingException: could not initi ...
- IDEA SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统
先放上github地址:spike-system,可以直接下载完整项目运行测试 SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统 技术栈:SpringBoot, MyS ...
随机推荐
- QUIC协议详解
声明 本文可以自由转载但需注明原始链接.本文为本人原创,作者LightningStar,原文发表在博客园.本文主体内容参考论文[1]完成. 介绍 QUIC,发音同quick,是"Quick ...
- JZ-013-调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对 ...
- 快速整透Redis中的压缩列表到底是个啥
压缩列表简介 压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构.一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值.它是Redis为了节省内存空间而开发的. 压缩列 ...
- tp5手机号验证码发送及验证
原文链接:https://blog.csdn.net/weixin_43389208/article/details/119153323 为什么使用短信: 场景:通常在使用手机号注册时需要发送短信验证 ...
- php 23种设计模型 - 组合模式(合成模式)
组合模式(Composite) 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这 ...
- js开发文档生成工具jsdoc安装使用
1.全局安装jsdoc,需要先安装node环境哦~ npm install -g jsdoc 2.在项目根目录新建文件conf.json,内容如下: { "tags": { &qu ...
- 除非Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站。
解决办法: 打开WINDOWS服务管理方法: 进入服务有二种方法: 1.开始-控制面板-管理工具单击,找到"服务"双击打开 在WINDOWS服务管理里 启动 World Wide ...
- ssm 关于mybatis启动报Result Maps collection already contains value for ...的问题总结
Result Maps collection already contains value for com.zhaike.mapping.ChapterMapper.BaseResultMap Err ...
- 深度学习工具LabelXml安装教程
LabelXml安装教程 1,下载LabelXml工具 前往github上下载labelxml,官网地址如下:https://github.com/tzutalin/labelImg 下载打包源码为z ...
- 用strace处理程序异常挂死情况
1. 环境: ubuntu 系统 + strace + vim 2.编写挂死程序:(参考博客) #include <stdio.h> #include <sys/types.h> ...