随着技术框架的不断更新,一些公司摒弃了原先的技术框架模式。而springboot慢慢取代了原有的ssm框架开发。为什么选择springboot呢?
下面让我们使用idea一起搭建完整版的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用于映射请求地址 标记在类上相当于父路径 标记在方法上相当于子路径 例如访问要加上父路径
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配置中心,配置数据库连接
#数据库名称
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方法
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层:接口
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层:接口
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:
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
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文件
代码:
在application.properties中添加Mybatis配置:
#数据库名称
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注解
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文件
Title
新建getUser.html
Title
编号
姓名
年龄
新建error.html
Title
查无此人
最后启动项目访问loalhost:8080/user/show,大功告成