~~ 在此之前,写过关于SpringBoot的IDEA快速部署,不会步骤的大家可以去看一哈,有问题的就留言。浅谈之SpringBoot的环境搭建及快速入门 QuQ
Spring整合Mybatis
- 添加Mybatis的起步依赖
- 添加数据库的驱动坐标
- 创建user表
- 创建实体Bean
- 编写Mapper
- 配置Mapper配置文件
- 在application.properties中添加mybatis的信息
- 测试:Controller
pom.xml:
<!-- mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!--MySQL连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
数据库连接信息:application.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
如果你的项目配置爆红了: 显示Cannot resolve class or package 'mysql'
- 别着急,因为我在导入Oracle的时候也遇到了同样的问题,就是:Oracle和Mysql的jar包依赖默认是runtime,相当于代码中的:
<scope>runtime</scope>
,也就是说只有运行的时候才会生效,所以你写代码的时候当然找不到这个包。 - 最简单的方法就是改为(非SpringBoot项目):
compile<scope>compile</scope>
- 你也可以去idea中彻底改了(自己百度),不推荐,idea那样设置是有原因滴!
- 此外就是idea最新版,SpringBoot项目已经解决了这个问题,最好还是使用默认的runtime
注:关于数据库连接问题(application.properties)
- 以前使用:com.mysql.jdbc.Driver
- 我的版本使用:com.mysql.cj.jdbc.Driver
创建并录入数据:
user实体类:(并且生成他的get、set以及toString方法,我就不挂出来了)
private Integer id;
private String username;
private String password;
private String name;
实体类的映射:resources下新建一个Mapper文件夹(UserMapper.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.fan.mapper.UserMapper">
<select id="queryUserList" resultType="user">
select * from user
</select>
</mapper>
SpringBoot中配置Mybatis信息(application.properties):
#spring集成mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.fan.domain
#加载MyBatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
测试:Controller
@Controller
public class MybatisController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/query")
@ResponseBody
public List<User> queryUserList(){
List<User> users=userMapper.queryUserList();
return users;
}
}
测试结果:SpringBoot成功整合mybatis
注:此外还是一个关于数据库连接的问题:
报错信息:Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specific time zone value if you want to utilize time zone support.
- 数据库是好的,连接信息没有错啊,为什么会报这样的错误呢?
于是去百度,得到了这样的解释:使用mysql的jdbc驱动最新版(6.0+)时,会遇到数据库和系统时区差异引起的问题。(注:CST代表的是中国上海时间(与北京时间,东八区相同))。 - 怎么解决呢?
在 jdbc的url后拼接serverTimezone=CST
spring.datasource.url=jdbc:mysql://localhost:3306/spring?&serverTimezone=UTC&....
当我们想要测试queryUserList()方法,必须借助Controller入口去测试,如果有单元测试的话,我们就可以通过单元测试去测试,这个时候就需要去Spring Boot去集成Junit
SpringBoot整合Juniti
- 添加Junit起步依赖
- 编写测试类
- 控制台打印信息
坐标依赖:
正常IDEA建立SpringBoot项目的时候会自动生成:
<!-- SpringBoot集成Junit测试的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootMybatisApplication.class)
public class MybatisTest {
@Autowired
private UserMapper userMapper;
@Test
public void test(){
List<User> users=userMapper.queryUserList();
System.out.println(users);
}
}
控制台信息:
SpringBoot整合SpringDateJPA(类似于Mybatis)
- 添加SpringDataJPA的起步依赖
- 添加数据库驱动依赖
- 在application.properties中配置数据库和jpa的相关属性
- 创建实体配置实体
- 编写userRepository
- 编写测试类
- 控制台打印信息
还是搭建环境的时候参考:浅谈之SpringBoot的环境搭建及快速入门
SpringDataJPA的起步依赖:
<!-- springboot jpa的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
数据库驱动依赖:
<!-- MySQL连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
在application.properties中配置数据库和jpa相关属性:
#DB Configuration:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8
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
创建与配置实体类(user):(并且生成他的get、set以及toString方法,我就不挂出来了)
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
private String password;
private String name;
}
编写userRepository:
public interface userRepository extends JpaRepository<User, Long> {
public List<User> findAll();
}
编写实体类:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class JpaTest {
@Autowired
private userRepository userRepository;
@Test
public void test(){
List<User> all=userRepository.findAll();
System.out.println(all);
}
}
控制台打印信息:
如果遇到如下错误信息:
- 原因可能是因为是jdk9,缺少相应的jar
- 解决办法,手动去添加对于maven坐标(我的是不需要的):
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
SpringBoot整合Redis
- 添加redis起步依赖
- 配置redis的连接信息
- 注入Redis Template测试redis操作
注:有需要看着部分的朋友请留言,我就去跟新一下,没有的话晚些也会跟新,创作不易,但很美!