1.创建SpringBoot项目
(1) 首先我们先在IDEA上创建一个SpringBoot的Web项目。打开IDEA,选择左上角file -----> new -----> project -----> Spring Initializr
(2) 选择next
- Group、Artifact: com.lcq.demo(这里是包路径前缀,可修改也可不修改(默认)com.example.demo)
- Java Version:8(选择自己电脑本地的jdk版本)
(3) 项目信息填写完后,选择next
这里要选择包依赖关系,先选择web就行了,mysql、mybatis、redis可以后续在pom里添加
(4) 选择next
project name: 项目名
project location:项目保存路径
可以根据自己需求更改
(5)最后选择 finish
其中DemoApplication就是项目的启动项。(可以将配置文件的后缀修改成.yaml)
启动看看是否配置成功
可以在启动类右键Run/debug ’DemoApplication’,也可以点击右上角的启动按钮
启动后有可能会报错
- 端口被占用
Web server failed to start. Port 8080 was already in use.
解决办法:打开配置文件,修改端口
2. 配置mybatis、mysql
(1) 在pom.xml里加入如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
引入mybatis有两种方式
mybatis-spring-boot-starter里面已经有包含jdbc里,如果不使用mybatis只用jdbctemplate就只用引入spring-boot-starter-jdbc
第一种方式引入Mybatis的方式
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
第二种方式引入Mybatis的方式
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
(2) 在application.yml配置你数据库的信息
配置文件默认是application.properties,改成.yaml格式。
server:
port: 9090
servlet:
context-path: /demo
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8&allowMultiQueries=true
username: root
password: admin
driver-class-name: com.mysql.cj.jdbc.Driver
这里更改了项目访问的项目名:context-path
配置完启动一下
可能出现的错误:
1.
解决方式:
更改@Test的引用包
3. 测试是否成功
打开数据库,建一张新表:t_student,并插入几条数据
创建对应的类,完整的类结构如下
(1) 建立一个controller包,在它下面创建一个TestController类
TestController类里的内容如下:
package com.lcq.demo.controller;
import com.lcq.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping(value = "/account")
public class TestController {
@Autowired
private StudentService studentService;
/**
* 获取账号数据
* @return
*/
@RequestMapping(value="/getUserInfo")
public Map<String, Object> getUserInfo() {
Map<String, Object> resultMap = new HashMap<>();
resultMap = studentService.queryUser();
return resultMap;
}
}
(2) 建立一个service包,在它下面创建一个StudentService类
StudentService类里的内容如下:
package com.lcq.demo.service;
import com.lcq.demo.mybatis.dao.TStudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class StudentService {
@Autowired
private TStudentMapper mapper;
//查询用户信息
public Map<String, Object> queryUser() {
return mapper.queryUser();
}
}
(3) 建立一个mybatis包,然后在他下面创建entity包,在entity下面创建一个TStudent实体类
package com.lcq.demo.mybatis.entity;
public class TStudent {
private String id;
private String name;
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
(4) 建立Dao层,在mybatis下面创建一个dao包,再在dao包里面创建TStudentMapper的接口
package com.lcq.demo.mybatis.dao;
import java.util.Map;
public interface TStudentMapper {
//查询用户信息
Map<String, Object> queryUser();
}
(5) 建立mybatis,在resources下面创建一个mapping包,然后再在里面创建mybatis包,最后创建TStudentMapper.xml
建包的时候分开创建,不要直接在建包的时候输:mapping.mybatis;可能会遇到解析的时候找不到xml文件,这里图省事直接写死条件,想要动态传入查询条件,在resultType前面加上parameterType="type”,type是参数的类型,例如:String,map。。。。
<?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.lcq.demo.mybatis.dao.TStudentMapper">
<resultMap id="BaseResultMap" type="com.lcq.demo.mybatis.entity.TStudent">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="age" jdbcType="SMALLINT" property="age"/>
</resultMap>
<!-- 查询用户信息 -->
<select id="queryUser" resultType="map">
SELECT
*
FROM
t_student
WHERE
id = '1'
</select>
</mapper>
(6) 添加包扫描
在application.yaml里添加实体类跟xml的路径
在启动类DemoApplication.java里添加dao层路径
最后启动项目,
打开网页输入:http://127.0.0.1:9090/demo/account/getUserInfo
出现数据库里的值就算成功了。
4. 配置redis
(1) 在pom.xml里加入如下:
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2) 在要引用的类里添加
@Autowired
private RedisTemplate<String,String> redisTemplate;
例如:在刚才的TestController.java里添加,并且在方法里调用写入跟读取
package com.lcq.demo.controller;
import com.lcq.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping(value = "/account")
public class TestController {
@Autowired
private StudentService studentService;
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 获取账号数据
* @return
*/
@RequestMapping(value="/getUserInfo")
public Map<String, Object> getUserInfo() {
Map<String, Object> resultMap = new HashMap<>();
resultMap = studentService.queryUser();
redisTemplate.opsForValue().set("test","123456789");
resultMap.put("redisValue",redisTemplate.opsForValue().get("test"));
return resultMap;
}
}
加完后,重新启动项目,照样在浏览器上输入项目访问路径,能取到在方法里存的值就OK了。