Spring boot 整合各种功能

这篇具有很好参考价值的文章主要介绍了Spring boot 整合各种功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 回顾

1. springboot框架。简化spring项目的初始化搭建和配置的。
2. springboot的配置文件种类: (1)properties (2)yml ===application
3. java读取springboot配置文件中的内容。
4. springboot注册web组件。
5. springboot包扫描的原理---自定义包扫描的路径

2. 正文

1.springboot自动装配原理
2.springboot整合数据源--连接数据库
3.springboot整合mybatis框架。
4.springboot整合pageHelper分页插件
5.springboot整合定时器。
6.springboot整合swagger接口文档
7.springboot整合mp[mybatis-plus]

3.springboot自动装配原理

我们在使用springboot时,并没有像之前项目加载我们的前端控制DispatcherServlet,也没有写编码过滤器。但是springboot可以完成请求以及编码的设置。

原理: 主启动类上的@SpringBootApplication注解上,而该注解是一个复合组件,而在复合注解中存在@EnableAutoConfiguration, 这个@EnableAutoConfiguration注解也是一个复合注解,包含@Import---而@Import注解导入一个AutoConfigurationImportSelector 【自动配置选择器】,在该类中存在一个方法getAutoConfigurationEntry --作用:得到自动配置类的实体。而这些自动配置类会完成相应的自动装配。

4. springboot整合数据源--连接数据库

连接我们的数据库----druid数据源----默认的数据源

4.1 设置默认数据源

(1)引入相关依赖

   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
   </dependency>

springboot自动配置会加载jdbc的自动配置类---读取springboot配置文件中数据源的信息,从而完成数据源的自动配置。

(2)application配置文件中配置数据源.

#配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/aaa?serverTimezone=Asia/Shanghai

(3)测试

@SpringBootTest
class Qy168Springboot03ApplicationTests {

    @Autowired
    private DataSource dataSource;//springboot帮你完成数据源的自动装配
    @Test
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getConnection());
    }

}

4.2 设置Druid数据源


        <!--druid数据源的依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.1</version>
        </dependency>

修改配置文件

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.url=jdbc:mysql://localhost:3306/aaa?serverTimezone=Asia/Shanghai
#初始化的连接对象的个数
spring.datasource.druid.initial-size=5
#最多的连接数
spring.datasource.druid.max-active=10

测试:

5. springboot整合mybatis框架

ssm===>spring框架需要配置SqlSesssionFactoryBean对象,还有配置DAO接口的代理实现类。

springboot会自动配置SqlSesssionFactoryBean对象,必须引入starter依赖

(1) 依赖

        <!--mybatis和springboot整合的依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

(2)创建实体类

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Double balance;
}

(3)dao接口

public interface UserDao {
    public List<User> findAll();
}

(4)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">
<!--namespace必须和dao接口的名称一模一样-->
<mapper namespace="com.aaa.qy168springboot03.dao.UserDao">

    <select id="findAll" resultType="com.aaa.qy168springboot03.entity.User">
        select * from t_user 
    </select>
</mapper>

(5)修改配置文件的内容

(6)在主启动类上dao接口的扫描配置

(7)测试

6. springboot整合pageHelper分页插件

        <!--pageHelper的依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>

测试:

 @Test
    public void testFindAll(){
        PageHelper.startPage(1,3);//拦截器: select * from t_user
        List<User> all = userDao.findAll();
        //把查询的结果封装到PageInfo类中
        PageInfo<User> pageInfo=new PageInfo<>(all);
        System.out.println("总条数:"+pageInfo.getTotal());
        System.out.println("总页数:"+pageInfo.getPages());
        System.out.println("当前页的记录:"+pageInfo.getList());
    }

7. 综合案例

springboot+mybatis+druid+pageHelper: CRUD

(1)创建springboot工程并引入相关的依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

(2)修改配置文件

#修改端口号
server.port=8888
#数据源
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.url=jdbc:mysql://localhost:3306/qy168?serverTimezone=Asia/Shanghai
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=10

#mybatis映射文件的路径
mybatis.mapper-locations=classpath:/mapper/*.xml

(3)实体类

tbl_dept

@Data
public class Dept {
    private Integer did;
    private String dname;
    private String loc;
}

tbl_emp

@Data
public class Emp {
    private Integer id;
    private String name;
    private double salary;
    private Date birthday;
    private String headImg;
    private Integer deptId;

    //查询员工时需要携带该员工对应的部门信息.
    private Dept dept;
}

(4)dao接口和映射文件

public interface EmpDao {
    
    //增加
    public int insert(Emp emp);
    
    //删除
    public int deleteById(Integer id);
    
    //修改
    public int update(Emp emp);
    
    //根据id查询员工信息
    public Emp selectById(Integer id);
    
    //查询所有
    public List<Emp> selectAll();
}

<?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">
<!--namespace必须和dao接口的名称一模一样-->
<mapper namespace="com.ykq.dao.EmpDao">

    <!--返回你添加时数据库生成的主键值-->
    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        insert into tbl_emp values(null,#{name},#{salary},#{birthday},#{deptId},#{headImg})
    </insert>
    <update id="update">
        update tbl_emp set name=#{name},salary=#{salary},birthday=#{birthday},dept_id=#{deptId},headImg=#{headImg}
        where id=#{id}
    </update>
    <delete id="deleteById">
        delete from tbl_emp where id=#{id}
    </delete>
    <!--sql片段-->
    <sql id="empSql">
        id,name,salary,birthday,dept_id deptId,headImg
    </sql>
    <select id="selectById" resultType="com.ykq.entity.Emp">
         select
          <include refid="empSql"/>
          from tbl_emp where id=#{id}
    </select>

    <!--查询所有员工携带部门信息-->
    <resultMap id="baseEmpMapper" type="com.ykq.entity.Emp" autoMapping="true">
          <id property="id" column="id"/>
        <result property="deptId" column="dept_id"/>
        <association property="dept" javaType="com.ykq.entity.Dept" autoMapping="true">
             <id property="did" column="did"/>
             <result property="dname" column="d_name"/>
        </association>
    </resultMap>
    <select id="selectAll" resultMap="baseEmpMapper">
        select * from tbl_emp e join tbl_dept d on e.dept_id=d.did
    </select>


</mapper>

(5)service业务层

public interface EmpService {
    
    public Result deleteById(int id);
    
    public Result update(Emp emp);
    
    public Result insert(Emp emp);
    
    public Result findById(Integer id);
    
    public Result findAll(Integer current,Integer pageSize);
}
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpDao empDao;
    @Override
    @Transactional
    public Result deleteById(int id) {
        int row = empDao.deleteById(id);
        return row>0?new Result(200,"删除成功",null):new Result(500,"删除失败",null);
    }

    @Override
    public Result update(Emp emp) {
        int row = empDao.update(emp);
        return row>0?new Result(200,"删除成功",null):new Result(500,"删除失败",null);
    }

    @Override
    public Result insert(Emp emp) {
        int row = empDao.insert(emp);
        return row>0?new Result(200,"删除成功",emp):new Result(500,"删除失败",null);
    }

    @Override
    public Result findById(Integer id) {
        Emp emp = empDao.selectById(id);
        return new Result(200,"查询成功",emp);
    }

    @Override
    public Result findAll(Integer current, Integer pageSize) {
        PageHelper.startPage(current,pageSize);
        List<Emp> emps = empDao.selectAll();
        PageInfo<Emp> pageInfo=new PageInfo<>(emps);
        return new Result(200,"查询成功",pageInfo);
    }
}

(6)controller接口层

package com.zjw.controller;

import com.zjw.entity.Emp;
import com.zjw.service.EmpService;
import com.zjw.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/emp")
public class EmpController {
    @Autowired
    private EmpService empService;
    @DeleteMapping
    public Result deleteById(Integer id){
        return empService.deleteById(id);
    }

    @PostMapping
    public Result insert(@RequestBody Emp emp){
        return empService.insert(emp);
    }

    @PutMapping
    public Result update(@RequestBody Emp emp){
        return empService.update(emp);
    }

    @GetMapping
    public Result getById(Integer id){
        return empService.findById(id);
    }


    @GetMapping("/getAll")
    public Result getAll(Integer current,Integer pageSize){
        return empService.findAll(current, pageSize);
    }
}

8. springboot整合定时器。

可以在规定的时间内执行相应的代码。

比如: OSS文件上传---OSS的文件冗余的文件。----OSS的浪费。---->指定的时间自动删除。[夜间删除]

比如: 下单--->30分钟未支付---取消订单。

(1)引入定时器的依赖--


        <!--引入定时器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>

(2)编写定义的业务代码

@Component
public class My {

    @Autowired
    private EmpDao empDao;
    //定时任务执行的代码
    @Scheduled(cron = "0 0 2 * * ?")
    public void show(){
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~");
        //可以写自己的写完代码
        empDao.delete();
    }
}

(3)开启定时的注解驱动文章来源地址https://www.toymoban.com/news/detail-665944.html

到了这里,关于Spring boot 整合各种功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年03月14日
    浏览(113)
  • 【SpringBoot】Spring Boot 项目中整合 MyBatis 和 PageHelper

    目录 前言         步骤 1: 添加依赖 步骤 2: 配置数据源和 MyBatis 步骤 3: 配置 PageHelper 步骤 4: 使用 PageHelper 进行分页查询 IDEA指定端口启动 总结         Spring Boot 与 MyBatis 的整合是 Java 开发中常见的需求,特别是在使用分页插件如 PageHelper 时。PageHelper 是一个针对 MyBat

    2024年04月25日
    浏览(53)
  • 【Spring Boot】SpringBoot 优雅整合Swagger Api 自动生成文档

    Swagger 是一套 RESTful API 文档生成工具,可以方便地生成 API 文档并提供 API 调试页面。 而 Spring Boot 是一款非常优秀的 Java Web 开发框架,它可以非常方便地构建 Web 应用程序。 在本文中,我们将介绍如何使用 Swagger 以及如何在 Spring Boot 中整合 Swagger 。 首先,在 pom.xml 文件中添

    2023年04月22日
    浏览(49)
  • Spring Boot中集成各种日志框架Logback、Log4j2和Java Util Logging

    Spring Boot支持多种日志框架,包括Logback、Log4j2和Java Util Logging(JUL)。在Spring Boot中,可以通过简单的配置来集成这些热门的日志框架。 下面将详细说明如何集成Logback、Log4j2和Java Util Logging,并提供相应的源代码示例。 集成Logback: Logback是Spring Boot默认的日志框架,它提供了高

    2024年02月05日
    浏览(57)
  • 【Spring Boot】Spring Boot自动加载机制:简化应用程序的启动

    在微服务盛行的今天,快速搭建和启动应用程序变得至关重要。Spring Boot作为Java生态系统中主流的框架,其自动加载机制使得开发者能够快速构建和启动应用程序。本文将详细介绍Spring Boot的自动加载机制,并通过代码示例加以说明。 首先,我们要了解Spring Boot自动加载机制

    2024年02月11日
    浏览(37)
  • Spring Boot Testing: 使用springboot-test提供的测试框架来实现自动化测试

    作者:禅与计算机程序设计艺术 软件测试是在开发过程中不可缺少的一环。单元测试、集成测试、功能测试等都是为了保证系统的质量而进行的测试活动。单元测试主要验证各个模块(类、方法)在各种情况下是否正常工作;集成测试则是将不同模块组合起来看是否可以正常

    2024年02月07日
    浏览(44)
  • 一个简单的增删改查Spring boot项目教程(完整过程,附代码)(从搭建数据库到实现增删改查功能),Springboot学习,Springboot项目,

    这里将会介绍怎么去搭建一个简单增删改查的Springboot项目,认真看完我相信你一定能够学会,并且附有完整代码; 首先要进行增删改查肯定是要有供操作的数据库; 这里我是用的SQLyog来搭建的,随便用什么都可以,只要能确保给项目一个配套的数据库就行; 打开IDEA,创建

    2024年02月15日
    浏览(66)
  • SpringBoot 整合 ES 进行各种高级查询搜索

    上一章:《ElasticSearch集群的搭建》 如果你还未安装es的相关信息,请先移步至:《ElasticSearch安装》进行安装 如果您的SpringBoot项目还未整合es,请移步至:《SpringBoot整合ElasticSearch实现模糊查询,批量CRUD,排序,分页,高亮》 同时本文的操作中涉及到ElasticSearchRepository和Ela

    2023年04月15日
    浏览(48)
  • spring boot es | spring boot 整合elasticsearch | spring boot整合多数据源es

    目录 Spring Boot与ES版本对应 Maven依赖 配置类 使用方式 @Test中注入方式 @Component中注入方式 查询文档 实体类 通过ElasticsearchRestTemplate查询 通过JPA查询 保存文档 参考链接 项目组件版本: Spring Boot:2.2.13.RELEASE Elasticsearch:6.8.0 JDK:1.8.0_66 Tips: 主要看第3列和第5列,根据ES版本选择

    2023年04月18日
    浏览(59)
  • 【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《Spring 狂野之旅:底层原理高级进阶》 🚀 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suze

    2024年02月19日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包