zoukankan      html  css  js  c++  java
  • SpringBoot的学习二:整合Redis,JPA,Mybatis

    Redis介绍:

      是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

    特性:

    • Redis 与其他 key - value 缓存产品有以下三个特点:
    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份。

    添加依赖:

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
       </dependency>
    <!--添加连接池的依赖-->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    </dependency>
     

     配置redis的链接信息:

    #Redis
    spring:
      redis:
        host: localhost # Redis服务器地址
        database: 0 # Redis数据库索引(默认为0)
        port: 6379 # Redis服务器连接端口
        password: # Redis服务器连接密码(默认为空)
        jedis:
          pool:
            max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
            max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
            max-idle: 8 # 连接池中的最大空闲连接
            min-idle: 0 # 连接池中的最小空闲连接
        timeout: 3000ms # 连接超时时间(毫秒)

     编写控制器controller,这里注意:

        RedisTemplate和StringRedisTemplate的区别:

          1. 两者的关系是StringRedisTemplate继承RedisTemplate。

          2. 两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

          3. SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。

          StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。

          RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。

    @RestController
    public class HelloController {
    @Autowired
    StringRedisTemplate stringRedisTemplate;
    // RedisTemplate redisTemplate;

    @GetMapping("/set")
    public void set() {
    ValueOperations ops = stringRedisTemplate.opsForValue();
    ops.set("keyYun", "valueYun");
    }

    @GetMapping("/get")
    public void get(){
    ValueOperations<String,String> ops = stringRedisTemplate.opsForValue();
    System.out.println(ops.get("keyYun"));
    }
    }

     启动程序,打印出结果

     SpringBoot整合JPA:

      JPA:用于对象持久化的API,是JavaEE 5.2平台标准的ORM规范,使得应用程序以统一的方式访问持久层 

    注入依赖,并添加Druid依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.28</version>
        <scope>runtime</scope>
    </dependency>
    

     添加配置:

    # 数据库的基本配置
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.url=jdbc:mysql://loaclhost:3306/day04?useUnicode=true&characterEncoding=UTF-8
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    # JPA配置
    spring.jpa.database=mysql
    # 在控制台打印SQL
    spring.jpa.show-sql=true
    # 数据库平台
    spring.jpa.database-platform=mysql
    # 每次启动项目时,数据库初始化策略
    spring.jpa.hibernate.ddl-auto=update
    # 指定默认的存储引擎为InnoDB
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
    

     创建一个实体类

    //@Entity:表明这是一个实体类,项目启动时会自动针对该类生成一张表
    @Entity(name = "t_user")
    public class user {
        @Id   //表示这个字段时id,唯一不标识
    //    GenerationType.IDENTITY:自增长
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        private String name;
        private String address;
      //省略set和get方法  

     编写接口如下

    //JpaRepository:提供了一些基本的数据操作方法,例如保存,更新,删除,分页查询等
    public interface userDao extends JpaRepository<user,Integer > {
    }
    

     编写测试类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    class Demo3ApplicationTests {
    
        @Autowired
        userDao  userDao;
    
        @Test
        void contextLoads() {
            user u = new user();
            u.setName("愚者");
            u.setAddress("理想国度");
            userDao.save(u);
        }
    
    }
    

     运行,数据库中查看结果

     

     redis单机版配置以上信息就行了,具体测试请参考博客https://blog.csdn.net/weixin_38312502/article/details/80916222

    Spring Boot 整合myBatis

    注入依赖

    <!--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>

     创建实体类user,具体参考上面

    编写mapper,

    @Mapper
    public interface userMapper {
        @Select("select * from t_user")
        public List<user> findAll();
    }  

     添加数据源库配置,具体参考上面 

    编写测试类

     @Autowired
        userMapper userMapper;
    
      @Test
        public void find(){
            List<user> users = userMapper.findAll();
            for (user u :users){
                System.out.println(u);
            }
        }
    

     控制台运行程序,打印结果:

     注意事项: mapper接口要加入@Mapper注解,这是配置mapper扫描,如果想一劳永逸的话,就在程序接口加全局扫描

    @SpringBootApplication
    @MapperScan(basePackages = "com.yun.demo3.mapper")
    public class Demo3Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Demo3Application.class, args);
        }
    
    }
  • 相关阅读:
    SVN 部署(基于 Linux)
    禅道部署(基于 Linux)
    MySQL 中文乱码问题
    设置 Linux 支持中文
    SQL 文件导入数据库
    虚拟 IP 设为静态 IP
    python selenium(定位方法)
    python selenium(环境搭建)
    「杂谈」苏州人不能太膨胀
    「SAP技术」如何看Z移动类型是复制哪个标准移动类型而创建的?
  • 原文地址:https://www.cnblogs.com/xiaolu915/p/11696091.html
Copyright © 2011-2022 走看看