浅谈之SpringBoot整合其他技术(Mybatis+SpringDataJPA+Junit+Redis)

~~ 在此之前,写过关于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操作

注:有需要看着部分的朋友请留言,我就去跟新一下,没有的话晚些也会跟新,创作不易,但很美!

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值