SpringBoot环境搭建
1.创建流程
1.1创建流程
项目结构
2.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
跟换为以下依赖
<!--web启动器为Spring MVC 提供了自动配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.编写controller
package com.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/test")
public String hello(){
return "hello java2206";
}
}
4.测试
注意SpringBoot的启动类的存放位置
2.SpringBoot的目录结构
2.1pom.xml文件
- 指定了一个父工程:指定当前工程为SpringBoot,帮助我们声明了starter依赖的版本。
- 项目的元数据:包名,项目名,版本号。
- 指定了properties信息:指定了java的版本为1.8
- 导入依赖:默认情况导入spring-boot-starter,spring-boot-starter-test
- 插件:spring-boot-maven-plugin
2.2.gitignore文件
默认帮我们忽略了一些文件和目录,避免提交到Git仓库中
2.3src目录
-src
-main
-java
-包名
启动类.java #需要将controller类,放在启动类的子包中或者同级包下
-resources
-static #存放静态资源的
-templates #存储模板页面的
application.properties # SpringBoot提供的唯一的配置文件
-test #只是为了测试用的
3.SpringBoot三种启动方式
- 运行启动类的main
- maven命令
- 采用jar包方式运行
4.SpringBoot的常用配置
4.1配置文件格式
SpringBoot的配置文件支持properties和yml,甚至他还支持json。更推荐使用yml文件格式:
- yml文件,会根据换行和缩进帮助咱们管理配置文件所在位置2. yml文件,相比properties更轻量级一些
yml文件的劣势:
1.严格遵循换行和缩进
2.在填写value时,一定要在:后面跟上空格
5.SpringBoot整合Mybatis
5.1xml方式整合mybatis
xml方式在编写复杂SQL时更适合
5.2导入相关依赖
<!--mysql连接数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--德鲁伊连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!--mybatis-Spring-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
5.3数据库信息
CREATE TABLE `users` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`pass` varchar(20) NOT NULL,
`tel` varchar(11) DEFAULT NULL,
`addr` varchar(50) DEFAULT NULL,
PRIMARY KEY (`uid`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
5.4编码
整合mybatis(非注解方式)
准备实体类
package com.pojo;
import lombok.Data;
@Data
public class Users {
private int uid;
private String name;
private String pass;
private String tel;
private String addr;
}
编写dao层
IUserDao.java
package com.qfedu.dao;
import com.qfedu.pojo.Users;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface IUserDao {
// 注解方式不用写mapper.xml文件 @Select("select * from users")
List<Users> getAllUsers();
}
创建mapper.xml文件
UsersDao.xml
<?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.dao.IUserDao">
<resultMap type="com.pojo.Users" id="UsersMap">
<result property="uid" column="uid" jdbcType="INTEGER"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="pass" column="pass" jdbcType="VARCHAR"/>
<result property="tel" column="tel" jdbcType="VARCHAR"/>
<result property="addr" column="addr" jdbcType="VARCHAR"/>
</resultMap>
<!--查询指定行数据-->
<select id="getAllUsers" resultMap="UsersMap">
select
uid, name, pass, tel, addr
from users
</select>
</mapper>
编写service层
IUserService接口
package com.qfedu.service;
import com.qfedu.pojo.Users;
import java.util.List;
public interface IUserService {
List<Users> getAllUsers();
List<Users> getUsersByPage(int cp, int ps);
}
接口实现类
package com.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.dao.IUserDao;
import com.pojo.Users;
import com.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao iud;
@Override
public List<Users> getAllUsers() {
return iud.getAllUsers();
}
@Override
public List<Users> getUsersByPage(int cp, int ps) {
Page<Users> objects = PageHelper.startPage(cp, ps);
List<Users> list = iud.getAllUsers();
PageInfo<Users> pi = new PageInfo<>(list);
return pi.getList();
}
}
编写controller层
UserController.java
package com.controller;
import com.pojo.Users;
import com.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private IUserService ius;
@GetMapping("/Users")
public List<Users> getAllUsers(){
return ius.getAllUsers();
}
@GetMapping("/UserPage")
public List<Users> getUsersByPage(@RequestParam(name = "cp", defaultValue = "1") int cp,
@RequestParam(name = "ps", defaultValue = "2") int ps){
return ius.getUsersByPage(cp, ps);
}
}
5.5新建application.properties文件
可在配置文件中配置端口号等信息
server.port=8888
5.6新建application.yml文件
注意:springboot默认是mysql8的配置,如果是mysql5的版本则需要在pom.xml文件中配置mysql5的版本
server:
port: 9999
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
username: java2206
password: 123456
mybatis:
mapper-locations: classpath:mapper/*Dao.xml
type-aliases-package: com.pojo
5.7测试
在两个配置文件中均配置了端口,第一个配置文件的优先级大于第二个
6.Springboot整合jsp
6.1pom引入需要的依赖
<!--jsp核心引擎依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--jstl-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
6.2在webapp下创建WEB-INF去存放jsp页面
users.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="https://cdn.bootcdn.net/ajax/libs/layui/2.7.6/layui.js"></script>
<html>
<head>
<title>users</title>
</head>
<body>
<h1>this is user page.</h1>
${list}
</body>
</html>
6.3编写controller
这里需要用到jsp则使用@controller注解+ @ResponseBody注解,@RestController无需jsp直接输出json格式数据
package com.controller;
import com.pojo.Users;
import com.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Controller
public class UserController {
@Autowired
private IUserService ius;
@GetMapping("/Users")
@ResponseBody
public List<Users> getAllUsers(){
return ius.getAllUsers();
}
@GetMapping("/UserPage")
@ResponseBody
public List<Users> getUsersByPage(@RequestParam(name = "cp", defaultValue = "1") int cp,
@RequestParam(name = "ps", defaultValue = "2") int ps){
return ius.getUsersByPage(cp, ps);
}
@GetMapping("/UsersView")
public String getUsersPage(Model m){
m.addAttribute("list", ius.getAllUsers());
return "users";
}
}
6.4配置前缀和后缀
mvc:
view:
prefix: /WEB-INF/view/
suffix: .jsp