Java最新Springboot项目搭建(前端到数据库,超详细),秀出天际

总结

在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了

面试真题

Spring源码笔记

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

}




里面就一个注解,和一个启动程序的方法。



(2.8)创建Controller:我们同样举例以万年不变的User为例,取名UserController。



![](https://img-blog.csdnimg.cn/20190211091959131.png)



package com.springboot.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

public class UserController {

@RequestMapping("/hello")

@ResponseBody

public String hello() {

	return "Hello World !!!";

}

}




(2.9)启动项目,执行app类中的main函数,如果正常,控制台出现下面输出,则项目已经启动成功了。



![](https://img-blog.csdnimg.cn/201902110921240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(2.10)我们在地址栏目输入 **localhost:8080/hello** 进行访问,如果能看到Hello world字样,则说明项目springboot已经搭建成功了。



![](https://img-blog.csdnimg.cn/20190211092439758.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



【03】常用配置设置  

springboot项目默认配置文件是resources文件夹下的application.yml文件,现在项目没有这些东西,需要手动进行创建。



(3.1)创建resources文件夹(该文件夹主要存放各种配置资源),如果项目已经有 src/main/resources文件夹,则该步骤略过。如果没有,请按照链接所示创建文件夹:[https://www.cnblogs.com/zhangyuanqiang/p/9183908.html]( )(敝人博客园文章)



![](https://img-blog.csdnimg.cn/20190211093855592.png)



(3.2)创建 application.yml 文件,选中src/main/java/resources/文件夹-->New-->Other



![](https://img-blog.csdnimg.cn/20190211095154521.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(3.3)选择General文件夹下的File,点击Next



![](https://img-blog.csdnimg.cn/20190211095509293.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(3.4)输入application.yml,点击Finish。



![](https://img-blog.csdnimg.cn/20190211095627624.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(3.5) 完成创建如图所示



![](https://img-blog.csdnimg.cn/20190211095730402.png)



(3.6)打开application.yml文件进行服务器配置(注意排版保持一致,也注意键值对的冒号后有一个空格)



server:

port: 80

session-timeout: 30

tomcat.max-threads: 0

tomcat.uri-encoding: UTF-8




![](https://img-blog.csdnimg.cn/20190211100331179.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(3.7)这样配置后,重启项目,我们就可以不用输入端口号了。



![](https://img-blog.csdnimg.cn/20190211100712167.png)



【注】当你手动熟悉了上面的流程,也可以试试 [如何快速创建一个 Springboot 项目]( ) 。



\-------------------------------------------------------------------------------------------------------------



【04】修改项目为热部署(凡有文件修改保存后,自动重启)



(4.1)打开pom.xml,加入下面依赖,最后重启一次项目。



<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>



![](https://img-blog.csdnimg.cn/20190211101349324.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(4.2)然后修改返回页面的语句,保存,你会发现项目可以自动重启了。



![](https://img-blog.csdnimg.cn/20190211101754967.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(4.3)并且也能访问成功,说明我们的热部署也已经配置成功了。



![](https://img-blog.csdnimg.cn/20190211101945887.png)



【05】**配置 Thymeleaf**



现在后台已经OK,后台的数据需要显示到前端,我们这里前端显示,用springboot常配套的 thymeleaf(相当于c标签),



这个使用起来很简单,基本一用就会,会c标签的更是一点即通。



下面是我对thymeleaf常用使用方式总结,不懂的可以看看:[https://blog.csdn.net/sunnyzyq/article/details/86685697]( )



(5.1)在pom.xml中加入thymeleaf



<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>



![](https://img-blog.csdnimg.cn/2019021110353794.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(5.2)在resoures文件夹下分别创建templates(主要放html文件)和static(主要放css、js文件)文件夹



![](https://img-blog.csdnimg.cn/20190211103914778.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(5.3)配置thymeleaf(这样配置后,再代码中返回到那个页面就不用写过多的前缀和后缀了,达到简化效果)



spring:

thymeleaf:

prefix: classpath:/templates/

suffix: .html

mode: HTML5

encoding: UTF-8

content-type: text/html

cache: false



![](https://img-blog.csdnimg.cn/20190211105210141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(5.4)再UserController.java文件中加入如下代码,保存。



@RequestMapping("/index")

public String index(Model model) {

	model.addAttribute("name", "jack");

	model.addAttribute("age", 20);

	model.addAttribute("info", "我是一个爱学习的好青年");

	return "index";

}



![](https://img-blog.csdnimg.cn/20190211105335557.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



 (5.5)在 templates 文件夹下加入页面 index.html



Index
姓名:<input type="text" th:value="${name}"><br/>

年龄:<input type="text" th:value="${age}"><br/>

简介:<input type="text" th:value="${info}"><br/>



![](https://img-blog.csdnimg.cn/20190211110008595.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(5.5)由于配置文件进行了修改,这一次我们需要手动重启项目,启动后,输入 **localhost/index** 访问,可以看到数据已经成功显示到页面上了。  

![](https://img-blog.csdnimg.cn/2019021111032478.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



**到此为止,我们前台、后台已经打通了,接下来就差最后一步了,把数据存入数据库。**



接下来,我们就采用 JPA 方式将数据写入到数据库中。



首先到数据库肯定需要jdbc连接容器和hibernate的相关jar包。



【06】配置数据库链接



(6.1)在pom.xml中加入jdbc链接容器相关jar包。



<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>



![](https://img-blog.csdnimg.cn/20190211110919315.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(6.2)配置数据库相关信息(注意datasource的层级是在spring下):



有数据库名称(我这里取名为boot)、数据库用户名、数据库密码等配置信息(这里你需要填你的数据库帐号和密码)



datasource:

url: jdbc:mysql://localhost:3306/boot

driver-class-name: com.mysql.jdbc.Driver

username: root

password: zyq123

initial-size: 10

max-active: 20

max-idle: 8

min-idle: 8



![](https://img-blog.csdnimg.cn/20190212111400369.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(6.3)在你的mysql中创建对应的数据库,名称和你的配置保持一致。



![](https://img-blog.csdnimg.cn/20190212111503469.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(6.4)加入JPA相关jar包(springboot中,hibernate的相关jar包已经集成到jpa中了,所以这里只需要引入jpa一个jar依赖即可,再也不用像以前那样引入一连串的hibernate相关包了)



<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>



![](https://img-blog.csdnimg.cn/20190211112416461.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



(6.5)配置JPA相关信息:



jpa:

database: mysql

show-sql: true

hibernate:

  ddl-auto: update

  naming:

    physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

database-platform: org.hibernate.dialect.MySQL5InnoDBDialect 



![](https://img-blog.csdnimg.cn/20190212111545717.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



好了,配置现在全部已经搞好了,接下来就是写dao层了。



在写Dao层前,先创建我们的测试实体类User



【07】创建相关实体



(7.1)我们创建一个bean文件夹来存放相关实体,首先创建一个BaseBean类,里面主要存放每个实体的公共属性,比如:id,创建人,创建时间,更新人,更新时间等,这里我们就只写一个公共属性ID来演示。



![](https://img-blog.csdnimg.cn/20190211114306265.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



package com.springboot.bean;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.MappedSuperclass;

@MappedSuperclass

public class BaseBean {

/**

 * 自增长ID

 */

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

}




(7.2)创建User实体类



![](https://img-blog.csdnimg.cn/20190211114222767.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



package com.springboot.bean;

import javax.persistence.Entity;

import javax.persistence.Table;

@Entity

@Table(name = “user”)

public class User extends BaseBean {

private String name;

private int age;

private String info;



public String getName() {

	return name;

}



public void setName(String name) {

	this.name = name;

}



public int getAge() {

	return age;

}



public void setAge(int age) {

	this.age = age;

}



public String getInfo() {

	return info;

}



public void setInfo(String info) {

	this.info = info;

}

}




(7.3)创建Service层接口



![](https://img-blog.csdnimg.cn/20190211114814549.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



package com.springboot.service;

import com.springboot.bean.User;

public interface UserService {

/**

 * 保存用户对象

 * @param user

 */

void save(User user);

}




(7.4)创建Service实现类(实现先暂时不管,等我们写了dao层再回来补上)



![](https://img-blog.csdnimg.cn/20190211115031960.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



package com.springboot.service.impl;

import org.springframework.stereotype.Service;

import com.springboot.bean.User;

import com.springboot.service.UserService;

@Service

public class UserServiceImpl implements UserService {

@Override

public void save(User user) {

	// TODO Auto-generated method stub

	

}

}




(7.5)加入dao层,该层接口都是去继承JpaRepository接口。



在一个项目中,我们往往会创建一个公共接口来处理到数据库的请求,比如分页等,然后每个接口去继承它即可。



所以我们首先创建这个公共dao层接口:CommonDao



![](https://img-blog.csdnimg.cn/20190211135459663.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



package com.springboot.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.stereotype.Repository;

import com.springboot.bean.BaseBean;

@Repository

public interface CommonDao extends JpaRepository<T, Long> {

}




(7.6)加入UserDao



![](https://img-blog.csdnimg.cn/20190211135806804.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



package com.springboot.dao;

import org.springframework.stereotype.Repository;

import com.springboot.bean.User;

@Repository

public interface UserDao extends CommonDao {

}




(7.7)现在回到UserServiceImpl类中,补全之前未完成的代码



![](https://img-blog.csdnimg.cn/20190211140105329.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



OK,到此为止,所有链路都已经打通了,我们现在搞点数据测试一下。



【8】测试



(8.1)修改index.html如下:



![](https://img-blog.csdnimg.cn/2019021114131862.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm55enlx,size_16,color_FFFFFF,t_70)



Index
姓名:<input type="text" th:value="${name}" name="name"><br/>

年龄:<input type="text" th:value="${age}" name="age"><br/>

简介:<input type="text" th:value="${info}" name="info"><br/>

<button>保存</button>



(8.2)再UserController类中增加保存用户的方法:



@Autowired

private UserService userService;

@RequestMapping("/save")

@ResponseBody

public String save(User user) {

	userService.save(user);

最后

由于篇幅原因,就不多做展示了

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

年龄:

简介:<input type="text" th:value="${info}" name="info"><br/>

<button>保存</button>



(8.2)再UserController类中增加保存用户的方法:



@Autowired

private UserService userService;

@RequestMapping("/save")

@ResponseBody

public String save(User user) {

	userService.save(user);

最后

[外链图片转存中…(img-xzpPCyJx-1715414116930)]

[外链图片转存中…(img-TOl4gA85-1715414116930)]

[外链图片转存中…(img-oXGaNfpM-1715414116931)]

[外链图片转存中…(img-Jim178N3-1715414116931)]

[外链图片转存中…(img-eMpe98Uo-1715414116931)]

[外链图片转存中…(img-zb4ibG02-1715414116932)]

由于篇幅原因,就不多做展示了

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值