大家好,又见面了,我是你们的朋友全栈君。
随着技术框架的不断更新,一些公司摒弃了原先的技术框架模式。而springboot慢慢取代了原有的ssm框架开发。为什么选择springboot呢?
- 配置简单不需要编写太多的xml;
- 基于spring构建,容易上手;
- 独立运行不依赖于容器;
- 内置服务器tomcat不需要打war包;
- 提供maven极简配置;
- 对于各种框架有很好的集成;
- 为SpringCloud微服务奠定基础,使微服务构建变得简单;
下面让我们使用idea一起搭建完整版的SpringBoot项目:
一.创建SpringBoot项目
1.打开idea:File->New->Project:
2.选择Spring Intializr,点击Next(注意:此处需要连接网络)
3.修改项目信息:Group:组名可不做修改(可以根据自己项目情况修改) 例如:标识性 com.自己名字缩写 ;Artifact:此处修改关系着项目名,点击下一步Next
4.这里可以选择也可以不选择;我在这里是先选择了,Web下勾选SpringWeb;Template Englines勾选Thymeleaf;SQL勾选MySQL Driver,JDBC API 和 MyBatis Framework;点击Next;
5.选择项目存放路径,点击Finish,选择New Window打开项目
6.创建完成,项目结构如图:
7.配置本地maven仓库(ps:可以使用idea自带meven仓库,也可配置自己的meven仓库),配置自己的需要下载maven仓库jar;
找到idea右侧maven,点击设置工具
maven官网:http://maven.apache.org/download.cgi详细参考maven仓库配置https://blog.csdn.net/huo920/article/details/82082403
8.选择Maven路径;勾选选择配置文件,会根据配置文件直接找到本地仓库位置;点击Apply应用
9.所有完成之后基本搭建已经完成下面开始测试能否访问页面,新建一个index.html主页面,名称为index
新建完成后,页面中随便写点内容
10.在标记的文件夹下新建controller包,包名为controller
11.在controller文件夹包下新建类,名称为TestController,Controller类需要添加注解@Controller用于项目启动自动加载扫描Controller类
@RequestMapping用于映射请求地址 标记在类上相当于父路径 标记在方法上相当于子路径 例如访问要加上父路径
代码语言:javascript复制package com.sun.mall.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author sunql
* @description controller层
* @date 2020/12/29 15:30
*/
@Controller
@RequestMapping(value = "/hello")
public class TestController {
@RequestMapping(value = "/test")
public String test(){
return "index";
}
}
12.在resources文件夹下application.properties配置中心,配置数据库连接
代码语言:javascript复制#数据库名称
spring.datasource.name=mall
#数据库连接url
spring.datasource.url= jdbc:mysql://localhost:3306/mall?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=123qwe
#数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
13.启动项目
13.访问项目地址:localhost:8080/hello/test, 8080启动端口号 hello是上面@Requestmapping(value=”/hello”)父路径 test是上面@Requestmapping(value=”/test”)子路径
14.大功告成,接下来进行连接数据库的基本curd
在mall数据库新建user表
15.在com.sun.mall包下创建model层,mapper层,service层以及实现service的impl层,controller层
在各个包层下面创建响应的类以及接口
model层:生成getter setter方法
代码语言:javascript复制package com.sun.mall.model;
/**
* @author sunql
* @description
* @date 2020/12/29 16:10
*/
public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
mapper层:接口
代码语言:javascript复制package com.sun.mall.mapper;
import com.sun.mall.model.User;
/**
* @author sunql
* @description
* @date 2020/12/29 16:15
*/
public interface UserMapper {
/**
* 根据id查询用户
* @param id
* @return
*/
User selectUserById(Integer id);
}
service层:接口
代码语言:javascript复制package com.sun.mall.service;
import com.sun.mall.model.User;
/**
* @author sunql
* @description
* @date 2020/12/29 16:18
*/
public interface UserService {
/**
* 根据id查询用户
* @param id
* @return
*/
User selectUserById(Integer id);
}
service层业务实现需要添加注解@Service,注入Mapper:
代码语言:javascript复制package com.sun.mall.service.impl;
import com.sun.mall.mapper.UserMapper;
import com.sun.mall.model.User;
import com.sun.mall.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author sunql
* @description
* @date 2020/12/29 16:20
*/
@Service
public class UserServiceImpl implements UserService {
/**
* 注入mapper到service层
*/
@Autowired
private UserMapper userMapper;
@Override
public User selectUserById(Integer id) {
return userMapper.selectUserById(id);
}
}
启动类添加注解@MapperScan(“com.sun.mall.mapper”),否则mapper无法注入,启动项目会报错找不到mapper
代码语言:javascript复制package com.sun.mall;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author sunql
*/
@SpringBootApplication
@MapperScan("com.sun.mall.mapper")
public class MallApplication {
public static void main(String[] args) {
SpringApplication.run(MallApplication.class, args);
}
}
16.在resources文件夹下新建mapper文件夹,在mapper文件夹下新建UserMapper.xml文件
代码:
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sun.mall.mapper.UserMapper" >
<select id="selectUserById" parameterType="int" resultType="com.sun.mall.model.User">
select * from user where id=#{id}
</select>
</mapper>
在application.properties中添加Mybatis配置:
代码语言:javascript复制#数据库名称
spring.datasource.name=mall
#数据库连接url
spring.datasource.url= jdbc:mysql://localhost:3306/mall?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=123qwe
#数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mybatis配置
#配置映射文件
mybatis.mapper-locations=classpath:mapper/*.xml
#配置实体类
mybatis.type-aliases-package=com.sun.mall.model
17.编写contoller类,创建UserController,注入UserService,添加@Controller注解
代码语言:javascript复制package com.sun.mall.controller;
import com.sun.mall.model.User;
import com.sun.mall.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author sunql
* @description
* @date 2020/12/29 16:45
*/
@Controller
@RequestMapping(value = "/user")
public class UserController {
/**
* 将UserService注入controller层
*/
@Autowired
private UserService userService;
@RequestMapping(value = "/show")
public String show(){
//返回user页面显示内容
return "user";
}
@PostMapping(value = "/getUser")
public String getUser(Integer id, Model model) {
User user = userService.selectUserById(id);
model.addAttribute("users",user);
if(user!=null){
return "getUser";
}else {
return "error";
}
}
}
18.编写user.html页面。在resources文件夹下templates文件夹下新建user.html文件
代码语言:javascript复制<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form role="form" action = "/user/getUser" method="post">
用户ID:<input type="text" id="id" name = "id"><br>
<input type="submit" id = "show" value = "查询">
</form>
</body>
</html>
新建getUser.html
代码语言:javascript复制<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.age}"></td>
</tr>
</table>
</body>
</html>
新建error.html
代码语言:javascript复制<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
查无此人
</body>
</html>
最后启动项目访问loalhost:8080/user/show,大功告成
希望大家在编程道路上一路前行,畅通无阻。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197692.html原文链接:https://javaforall.cn