Spring Boot【全解】5
五、SpringBoot与整合其他技术
1.1 SpringBoot整合Mybatis
1.1.1 创建工程
选择springboot项目
项目名称:springboot_mybatis
选择web、mybatis
点击完成
1.1.1 添加Mybatis的起步依赖
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
1.1.1 添加数据库驱动坐标
<!--mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1.1.2 添加数据库连接信息
在application.properties中添加数据量的连接信息
#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///itcastspringboot
spring.datasource.username=root
spring.datasource.password=root
1.1.3 创建user表
在itcastspringboot数据库中创建user表
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) DEFAULT NULL,
`password` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三');
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
1.1.4 创建实体Bean
创建包com.itheima.domain,创建类User.java
public class User {
private Integer id;
private String username;
private String password;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
'}';
}
}
1.1.5 编写UserDao.java
创建com.itheima.dao,创建类UserDao.java
@Mapper
public interface UserDao {
public List<User> findAll();
}
注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中
1.1.6 配置Dao映射文件
在src\main\resources\com\itheima\dao路径下加入UserDao.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.itheima.dao.UserDao">
<select id="findAll" resultType="user">
select * from user
</select>
</mapper>
或者
使用注解:
@Mapper
public interface UserDao {
// 查询所有
@Select(value = "select * from user")
public List<User> findAll();
}
1.1.7 在application.properties中添加mybatis的信息
查找:mybatis的启动依赖
mybatis-spring-boot-autoconfigure-1.1.1.jar
application.properties文件的配置:
#spring集成Mybatis环境,取代applicationContext.xml
#pojo别名扫描包(用于配置文件方式)
mybatis.type-aliases-package=com.itheima.domain
#加载Mybatis映射文件(用于配置文件方式)
mybatis.mapper-locations=classpath:com/itheima/dao/*Dao.xml
1.1.1 编写测试Controller
创建com.itheima.controller,创建类UserController.java
@Controller
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping("/queryUser")
@ResponseBody
public List<User> queryUser(){
List<User> users = userDao.findAll();
return users;
}
}
也可以使用@RestController,可去掉@ResponseBody。
@RestController
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping("/queryUser")
public List<User> queryUser(){
List<User> users = userDao.findAll();
return users;
}
}
1.1.2 测试
启动SpringbootMybatisApplication.java
@SpringBootApplication
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
访问:http://localhost:8080/queryUser
注意:如果出现错误:
表示使用高版本的mysql驱动:
如果使用mysql5的版本,不会出现问题。
解决方案:
使用root账号登录sqllyog工具,执行:
SHOW VARIABLES LIKE '%time_zone%';
SET GLOBAL time_zone='+8:00';
或者:
修改mysql安装目录中的D:\Program Files\MySQL\MySQL Server 5.5\my.ini文件
添加:default-time-zone='+08:00'
1.1 SpringBoot整合Junit
1.1.1 添加Junit的起步依赖
<!--junit测试的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
1.1.2 编写测试类
创建包com.itheima.test,创建类UserTest.java
package com.itheima.test;
import com.itheima.SpringbootMybatisApplication;
import com.itheima.dao.UserDao;
import com.itheima.domain.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootMybatisApplication.class)
public class UserTest {
@Autowired
private UserDao userDao;
@Test
public void test() {
List<User> users = userDao.findAll();
System.out.println(users);
}
}
其中,
SpringRunner继承自SpringJUnit4ClassRunner,我们使用哪一个Spring提供的测试引擎都可以
public final class SpringRunner extends SpringJUnit4ClassRunner {
public SpringRunner(Class<?> clazz) throws InitializationError {
super(clazz);
}
}
@SpringBootTest的属性指定的是引导类的字节码对象
@SpringBootTest(classes = SpringbootMybatisApplication.class)
1.1.3 控制台打印信息
运行测试
1.1 SpringBoot整合Spring Data JPA
1.1.1 创建工程
创建工程springboot_jpa
选择web、jpa、redis
1.1.1 添加Spring Data JPA的起步依赖
<!-- springBoot JPA的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
1.1.2 添加数据库驱动依赖
<!--mysql的连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1.1.3 在application.properties中配置数据库和jpa的相关属性
查找spring-boot-autoconfigure-2.0.1.RELEASE.jar
可以找到spring.jpa的相关属性配置。
application.properties
#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///itcastspringboot
spring.datasource.username=root
spring.datasource.password=root
#JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
1.1.1 创建实体配置实体
创建com.itheima.domain,创建类User.java
@Entity
@Table(name = "user")
public class User {
// 主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private String username;
@Column
private String password;
@Column
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
'}';
}
}
1.1.2 编写UserRepository
创建包com.itheima.repository,创建接口UserRepository.java
public interface UserRepository extends JpaRepository<User,Integer> {
// jpa底层提供查询所有的方法
}
1.1.3 编写测试类
创建包com.itheima.test,创建类UserTest.java
package com.itheima.test;
import com.itheima.SpringbootJpaApplication;
import com.itheima.domain.User;
import com.itheima.repository.UserRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=SpringbootJpaApplication.class)
public class UserTest {
@Autowired
private UserRepository userRepository;
@Test
public void test(){
List<User> users = userRepository.findAll();
System.out.println(users);
}
}
1.1.4 控制台打印信息
注意:如果是jdk9,执行报错如下:
原因:jdk缺少相应的jar
解决方案:手动导入对应的maven坐标,如下:
<!--jdk9需要导入如下坐标-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
1.1 SpringBoot整合Redis
使用springboot_jpa项目操作redis,之前我们要操作数据库,现在我们操作索引库。
1.1.1 添加redis的起步依赖
<!--配置使用redis启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1.1.2 配置redis的连接信息
查看:spring-boot-autoconfigure-2.0.1.RELEASE.jar
spring.redis的配置。
application.xml文件的配置:
#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
1.1.1 注入RedisTemplate测试redis操作
创建包com.itheima.test,创建类RedisTest.java
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootJpaApplication.class)
public class RedisTest {
@Autowired
private UserRepository userRepository;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Test
public void test() throws JsonProcessingException {
//从redis缓存中获得指定的数据
String userListData = redisTemplate.boundValueOps("user.findAll").get();
//如果redis中没有数据的话
if(userListData==null){
//查询数据库获得数据
List<User> list = userRepository.findAll();
//转换成json格式字符串
ObjectMapper om = new ObjectMapper();
userListData = om.writeValueAsString(list);
//将数据存储到redis中,下次在查询直接从redis中获得数据,不用在查询数据库
redisTemplate.boundValueOps("user.findAll").set(userListData);
System.out.println("===============从数据库获得数据,存放到redis===============");
}
else{
System.out.println("===============从redis缓存中获得数据===============");
}
System.out.println("获取的数据是:"+userListData);
}
}
测试
第一次从数据库中获取数据
第二次从redis非关系型数据库中获取数据
查看redis数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!