IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot整合Mybatis和Redis -> 正文阅读

[Java知识库]SpringBoot整合Mybatis和Redis

Java配置的方式

Spring从开始出现到现在,共经历了5个大的版本,并依次推出了3种配置方式:XML配置,注解配置和Java配置。
在这里插入图片描述

实现Java配置方式
在这里插入图片描述
示例:创建一个userBean:


public class User {
    private Integer userId;
    private String userName;

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                '}';
    }
    //省略get set方法

创建一个专门用来配置的配置类 管理User用户类

@Configuration //声明当前类为Java配置类,与Spring/SpringBoot配置文件具有相同功能: 控制反转
public class MyConfig {
    @Bean//把该对象放入spring容器中
    public User user(){
        User user = new User();
        user.setUserName("小花");
        return user;
    }
}

在测试类种进行测试:

@SpringBootTest
public class DemopeizhileiApplicationTests {
    @Resource(name = "user")//依赖注入 默认方法名为bean的匿名
    private User user;
    @Test
   public void contextLoads() {
        System.out.println(user);
    }

}

打印结果为:可以看到userName赋值成功
在这里插入图片描述

整合Mybatis

在这里插入图片描述

mybatis-spring方式:
特点: 比较符合SSM整合中的思路.相比第2种方式,操作和配置内容较多.
t添加依赖
在这里插入图片描述

编写配置文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例:以查询学生为例
创建springboot项目
在pom中添加依赖

 <!--添加Spring与MyBatis整合 依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.1</version>
        </dependency>
        <!--添加MyBatis的依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- 添加mysql驱动器依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.22</version><!--默认8.0.16-->
        </dependency>
        <!-- 声明SpringBoot依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

在springboot配置文件中配置数据源:application.properties文件

#配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=175904
spring.datasource.url=jdbc:mysql://localhost:3306/mydb

编写sqlsessionfactory配置类:

@Configuration
public class SqlSessionFactoryConfig {
    @Resource
    DataSource dataSource;//依赖注入
    @Bean//默认Bean匿名: 方法名
    public SqlSessionFactory sqlSessionFactory(){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        try {
            // 设置数据源
            sqlSessionFactoryBean.setDataSource(dataSource);
            // 为指定包下的类设置别名
            sqlSessionFactoryBean.setTypeAliasesPackage("com.yay.demomybatis1.pojo");
            return sqlSessionFactoryBean.getObject();
        } catch (Exception e) {
            throw new RuntimeException();
        }
    }
}

编写MapperScannerConfigurer配置类


@Configuration
public class MapperConfig {
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        // 通过SqlSessionFactoryBean生产SqlSessionFactory实例
        msc.setSqlSessionFactoryBeanName("sqlSessionFactory");
        // 定义扫描的包
        msc.setBasePackage("com.yay.demomybatis1.mapper");
        return msc;
    }
}

在pojo包下编写Student实体类

public class Student {
    private Integer stuId;
    private String stuName;
    private String stuSex;
    private Integer stuAge;
    private Integer gradeId;
    private Date stuBirth;

    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuSex='" + stuSex + '\'' +
                ", stuAge=" + stuAge +
                ", gradeId=" + gradeId +
                ", stuBirth=" + stuBirth +
                '}';
    }
//省略get set方法

在mapper包下编写StudentMapper接口

import java.util.List;
public interface StudentMapper {
    public List<Student> listStu();
}

在mapper包下编写StudentMapperSQL映射文件

<?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.yay.demomybatis1.mapper.StudentMapper">
    <resultMap id="BaseMap" type="student">
        <id property="stuId" column="id"/>
        <result property="stuName" column="name"/>
        <result property="stuSex" column="sex"/>
        <result property="stuAge" column="age"/>
        <result property="stuBirth" column="birth"/>
        <result property="gradeId" column="gradeId"/>
    </resultMap>
    <select id="listStu" resultMap="BaseMap">
        select * from student
    </select>
</mapper>
    

在service包下创建StudentService接口及实现类


public interface StudentService {
    public List<Student> list();
}

import javax.annotation.Resource;
import java.util.List;
@Service("studentService")
public class StudentServiceImpl implements StudentService {
    @Resource//依赖注入
    private StudentMapper stuMapper;
    @Override
    public List<Student> list() {
        return stuMapper.listStu();
    }
}

在controller包下创建StudentController控制器类


@Controller
@RequestMapping("/student")
public class StudentController {
    @Resource(name = "studentService")//依赖注入
    private StudentService studentService;
    @RequestMapping("/list")
    @ResponseBody
    public String list(){
        List<Student> list = studentService.list();
        return list.toString();
    }
}

注意:
Maven在打包时,默认只扫描resources中xml及配置文件. 因此我们需要 将映射文件放到此处 或者 指定扫描src/main/java中的配置
在pom文件中加入:因为你的SQL映射文件在mapper包下 默认并不加载resources包之外的配置文件,需要自己指明。

  <!-- 必须: 使SpringBoot扫描src/main/java中的xml和其他配置文件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

启动项目,访问:成功打印
在这里插入图片描述
整合Mybatis:mybatis-spring-boot-starter方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例 还是以查询student为例

添加依赖:

  <!-- 添加mybatis相关的依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>
        <!-- 添加mysql驱动器依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.22</version><!--默认8.0.16-->
        </dependency>

编写application配置文件:

#配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=175904
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
#为指定包下的实体类指定别名
mybatis.type-aliases-package=com.yay.mybatisdemo2.pojo
#Mapper映射文件的位置 可以不写 但是必需保证在mapper包下并且名字和Mapper接口名一致
mybatis.mapper-locations=classpath:com/yay/mybatisdemo2/mapper/*.xml

注册SqlSessionFactory:
SpringBoot自动完成.

注册Mapper扫描对象:
备注:
此处仅指出了Mapper接口的位置,映射文件必须与Mapper接口在同1位置,且名称为Mapper接口名[方式2].
方式1:
@Mapper标注Mapper接口,在启动入口类中指出扫描Mapper接口所在包
方式2:
@MapperScan标注启动入口类或某个Java配置类,声明扫描指定包中的Mapper接口

提供事务管理对象和开启事务管理:
SpringBoot自动完成.

在pojo包中编写Student实体类:


public class Student {
    private Integer stuId;
    private String stuName;
    private String stuSex;
    private Integer stuAge;
    private Integer gradeId;
    private Date stuBirth;

    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuSex='" + stuSex + '\'' +
                ", stuAge=" + stuAge +
                ", gradeId=" + gradeId +
                ", stuBirth=" + stuBirth +
                '}';
    }
    //省略get set

编写StudentMapper接口在mapper包中

import java.util.List;
public interface StudentMapper {
    public List<Student> listStu();
}

编写StudentMapper.xml映射文件在mapper包中

<?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.yay.mybatisdemo2.mapper.StudentMapper">
    <resultMap id="BaseMap" type="student">
        <id property="stuId" column="id"/>
        <result property="stuName" column="name"/>
        <result property="stuSex" column="sex"/>
        <result property="stuAge" column="age"/>
        <result property="stuBirth" column="birth"/>
        <result property="gradeId" column="gradeId"/>
    </resultMap>
    <select id="listStu" resultMap="BaseMap">
        select * from student
    </select>
</mapper>
    
    

编写StudentService接口及实现类在service包中


public interface StudentService {
    public List<Student> list();
}

import javax.annotation.Resource;
import java.util.List;
@Service("studentService")
public class StudentServiceImpl implements StudentService {
    @Resource
    private StudentMapper stuMapper;
    @Override
    public List<Student> list() {
        return stuMapper.listStu();
    }
}

编写StudentController控制器类在controller包中


@Controller
@RequestMapping("/student")
public class StudentController {
    @Resource(name = "studentService")
    private StudentService studentService;
    @RequestMapping("/list")
    @ResponseBody
    public String list(){
        List<Student> list = studentService.list();
        return list.toString();
    }
}

别忘了在pom中添加:

 <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

访问成功
在这里插入图片描述

整合Redis

步骤:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
示例 :
创建springBoot项目 添加依赖

   <!--添加redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

编写application配置文件

#配置redis连接参数
#本机可以写为localhost
spring.redis.host=localhost
#Redis服务端连接端口号
spring.redis.port=6379
#spring.redis.password=登录密码  #若未开启密码,则可以省略此配置\
# 默认连接Redis中的指定仓库.
spring.redis.database=0

创建Redis配置类,提供RedisTemplate对象
备注:
1.RedisTemplate对象 用于 存取 数据.
2.RedisTemplate对象默认采用JDK序列化器,对存入的数据进行序列化,对取出的数据进行反序列化操作.[JDK序列化器操作的数据,无法直接显示出原始内容,会乱码]


@Configuration //声明当前类为配置类
public class RedisConfig{
    @Bean// 参数RedisConnectionFactory为Spring Boot自动注入
    public RedisTemplate<String ,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        //创建RedisTemplate
        RedisTemplate<String,Object> ret = new RedisTemplate<String, Object>();
        //设置连接工厂
        ret.setConnectionFactory(redisConnectionFactory);
        return ret;
    }
}

第5步: 应用RedisTemplate对象
方式1: 通过Web请求到程序中,在程序中使用RedisTemplate对象调用存取方法进行Redis操作.
方式2: 启动服务时,自动使用RedisTemplate对象调用存取方法进行Redis操作.
方式2:

@Component
public class RWRedis implements CommandLineRunner {
    @Resource
    private RedisTemplate redisTemplate;//注入RedisTemplate
    @Override
    public void run(String... args) throws Exception {
        //操作RedisTemplate对redis进行写操作
       redisTemplate.opsForValue().set("name","java");
    }
}

启动程序
在这里插入图片描述
可以看到成功写入了值,因为序列化所以乱码

方式1:新建一个RedisController控制器类 访问改控制器的时候对redis进行操作

@Controller
@RequestMapping("/redis")
public class RedisController {
    @Resource//注入RedisTemplate 对象
    private RedisTemplate redisTemplate;
    @RequestMapping("/test")
    @ResponseBody
    public String testredis(){
        //操作RedisTemplate对redis进行读操作 读取name的值
        String name= (String) redisTemplate.opsForValue().get("name");
        在控制台输入name的值
        System.out.println(name);
        return "你好redis";
    }
}

启动项目访问改控制器类:
在控制台中打印了name的值java

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 22:59:17  更:2021-07-14 22:59:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:40:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码