Spring boot 整合各种功能

打印 上一主题 下一主题

主题 911|帖子 911|积分 2735

1. 回顾
  1. 1. springboot框架。简化spring项目的初始化搭建和配置的。
  2. 2. springboot的配置文件种类: (1)properties (2)yml ===application
  3. 3. java读取springboot配置文件中的内容。
  4. 4. springboot注册web组件。
  5. 5. springboot包扫描的原理---自定义包扫描的路径
复制代码
2. 正文
  1. 1.springboot自动装配原理
  2. 2.springboot整合数据源--连接数据库
  3. 3.springboot整合mybatis框架。
  4. 4.springboot整合pageHelper分页插件
  5. 5.springboot整合定时器。
  6. 6.springboot整合swagger接口文档
  7. 7.springboot整合mp[mybatis-plus]
复制代码
3.springboot自动装配原理

我们在使用springboot时,并没有像之前项目加载我们的前端控制DispatcherServlet,也没有写编码过滤器。但是springboot可以完成请求以及编码的设置。
原理: 主启动类上的@SpringBootApplication注解上,而该注解是一个复合组件,而在复合注解中存在@EnableAutoConfiguration, 这个@EnableAutoConfiguration注解也是一个复合注解,包含@Import---而@Import注解导入一个AutoConfigurationImportSelector 【自动配置选择器】,在该类中存在一个方法getAutoConfigurationEntry --作用:得到自动配置类的实体。而这些自动配置类会完成相应的自动装配。


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

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

(1)引入相关依赖
  1.    <dependency>
  2.             <groupId>org.springframework.boot</groupId>
  3.             <artifactId>spring-boot-starter-jdbc</artifactId>
  4.         </dependency>
  5.         <dependency>
  6.             <groupId>mysql</groupId>
  7.             <artifactId>mysql-connector-java</artifactId>
  8.    </dependency>
复制代码
springboot自动配置会加载jdbc的自动配置类---读取springboot配置文件中数据源的信息,从而完成数据源的自动配置。

(2)application配置文件中配置数据源.
  1. #配置数据源
  2. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  3. spring.datasource.username=root
  4. spring.datasource.password=root
  5. spring.datasource.url=jdbc:mysql://localhost:3306/aaa?serverTimezone=Asia/Shanghai
复制代码
(3)测试
  1. @SpringBootTest
  2. class Qy168Springboot03ApplicationTests {
  3.     @Autowired
  4.     private DataSource dataSource;//springboot帮你完成数据源的自动装配
  5.     @Test
  6.     void contextLoads() throws SQLException {
  7.         System.out.println(dataSource.getConnection());
  8.     }
  9. }
复制代码
4.2 设置Druid数据源
  1.         
  2.         <dependency>
  3.             <groupId>com.alibaba</groupId>
  4.             <artifactId>druid-spring-boot-starter</artifactId>
  5.             <version>1.2.1</version>
  6.         </dependency>
复制代码
修改配置文件
  1. spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.druid.username=root
  3. spring.datasource.druid.password=root
  4. spring.datasource.druid.url=jdbc:mysql://localhost:3306/aaa?serverTimezone=Asia/Shanghai
  5. #初始化的连接对象的个数
  6. spring.datasource.druid.initial-size=5
  7. #最多的连接数
  8. spring.datasource.druid.max-active=10
复制代码
测试:

5. springboot整合mybatis框架

ssm===>spring框架需要配置SqlSesssionFactoryBean对象,还有配置DAO接口的代理实现类。
springboot会自动配置SqlSesssionFactoryBean对象,必须引入starter依赖
(1) 依赖
  1.         
  2.         <dependency>
  3.             <groupId>org.mybatis.spring.boot</groupId>
  4.             <artifactId>mybatis-spring-boot-starter</artifactId>
  5.             <version>2.1.0</version>
  6.         </dependency>
复制代码
(2)创建实体类
  1. @Data
  2. public class User {
  3.     private Integer id;
  4.     private String username;
  5.     private String password;
  6.     private String name;
  7.     private Double balance;
  8. }
复制代码
(3)dao接口
  1. public interface UserDao {
  2.     public List<User> findAll();
  3. }
复制代码
(4)mapper映射文件
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.aaa.qy168springboot03.dao.UserDao">
  5.     <select id="findAll" resultType="com.aaa.qy168springboot03.entity.User">
  6.         select * from t_user
  7.     </select>
  8. </mapper>
复制代码
(5)修改配置文件的内容

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

(7)测试

6. springboot整合pageHelper分页插件
  1.         
  2.         <dependency>
  3.             <groupId>com.github.pagehelper</groupId>
  4.             <artifactId>pagehelper-spring-boot-starter</artifactId>
  5.             <version>1.4.5</version>
  6.         </dependency>
复制代码
测试:
  1. @Test
  2.     public void testFindAll(){
  3.         PageHelper.startPage(1,3);//拦截器: select * from t_user
  4.         List<User> all = userDao.findAll();
  5.         //把查询的结果封装到PageInfo类中
  6.         PageInfo<User> pageInfo=new PageInfo<>(all);
  7.         System.out.println("总条数:"+pageInfo.getTotal());
  8.         System.out.println("总页数:"+pageInfo.getPages());
  9.         System.out.println("当前页的记录:"+pageInfo.getList());
  10.     }
复制代码
7. 综合案例

springboot+mybatis+druid+pageHelper: CRUD
(1)创建springboot工程并引入相关的依赖
  1.                         org.springframework.boot            spring-boot-starter-web                            org.mybatis.spring.boot            mybatis-spring-boot-starter            2.3.1                            mysql            mysql-connector-java                            org.projectlombok            lombok            true        
  2.         <dependency>
  3.             <groupId>com.alibaba</groupId>
  4.             <artifactId>druid-spring-boot-starter</artifactId>
  5.             <version>1.2.1</version>
  6.         </dependency>                    com.github.pagehelper            pagehelper-spring-boot-starter            1.4.5                            org.springframework.boot            spring-boot-starter-test            test            
复制代码
(2)修改配置文件
  1. #修改端口号
  2. server.port=8888
  3. #数据源
  4. spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
  5. spring.datasource.druid.username=root
  6. spring.datasource.druid.password=root
  7. spring.datasource.druid.url=jdbc:mysql://localhost:3306/qy168?serverTimezone=Asia/Shanghai
  8. spring.datasource.druid.initial-size=5
  9. spring.datasource.druid.max-active=10
  10. #mybatis映射文件的路径
  11. mybatis.mapper-locations=classpath:/mapper/*.xml
复制代码
(3)实体类
tbl_dept
  1. @Data
  2. public class Dept {
  3.     private Integer did;
  4.     private String dname;
  5.     private String loc;
  6. }
复制代码
tbl_emp
  1. @Data
  2. public class Emp {
  3.     private Integer id;
  4.     private String name;
  5.     private double salary;
  6.     private Date birthday;
  7.     private String headImg;
  8.     private Integer deptId;
  9.     //查询员工时需要携带该员工对应的部门信息.
  10.     private Dept dept;
  11. }
复制代码
(4)dao接口和映射文件
  1. public interface EmpDao {
  2.    
  3.     //增加
  4.     public int insert(Emp emp);
  5.    
  6.     //删除
  7.     public int deleteById(Integer id);
  8.    
  9.     //修改
  10.     public int update(Emp emp);
  11.    
  12.     //根据id查询员工信息
  13.     public Emp selectById(Integer id);
  14.    
  15.     //查询所有
  16.     public List<Emp> selectAll();
  17. }
复制代码
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.ykq.dao.EmpDao">
  5.    
  6.     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
  7.         insert into tbl_emp values(null,#{name},#{salary},#{birthday},#{deptId},#{headImg})
  8.     </insert>
  9.     <update id="update">
  10.         update tbl_emp set name=#{name},salary=#{salary},birthday=#{birthday},dept_id=#{deptId},headImg=#{headImg}
  11.         where id=#{id}
  12.     </update>
  13.     <delete id="deleteById">
  14.         delete from tbl_emp where id=#{id}
  15.     </delete>
  16.    
  17.     <sql id="empSql">
  18.         id,name,salary,birthday,dept_id deptId,headImg
  19.     </sql>
  20.     <select id="selectById" resultType="com.ykq.entity.Emp">
  21.          select
  22.           <include refid="empSql"/>
  23.           from tbl_emp where id=#{id}
  24.     </select>
  25.    
  26.     <resultMap id="baseEmpMapper" type="com.ykq.entity.Emp" autoMapping="true">
  27.           <id property="id" column="id"/>
  28.         <result property="deptId" column="dept_id"/>
  29.         <association property="dept" javaType="com.ykq.entity.Dept" autoMapping="true">
  30.              <id property="did" column="did"/>
  31.              <result property="dname" column="d_name"/>
  32.         </association>
  33.     </resultMap>
  34.     <select id="selectAll" resultMap="baseEmpMapper">
  35.         select * from tbl_emp e join tbl_dept d on e.dept_id=d.did
  36.     </select>
  37. </mapper>
复制代码
(5)service业务层
  1. public interface EmpService {
  2.    
  3.     public Result deleteById(int id);
  4.    
  5.     public Result update(Emp emp);
  6.    
  7.     public Result insert(Emp emp);
  8.    
  9.     public Result findById(Integer id);
  10.    
  11.     public Result findAll(Integer current,Integer pageSize);
  12. }
复制代码
  1. @Service
  2. public class EmpServiceImpl implements EmpService {
  3.     @Autowired
  4.     private EmpDao empDao;
  5.     @Override
  6.     @Transactional
  7.     public Result deleteById(int id) {
  8.         int row = empDao.deleteById(id);
  9.         return row>0?new Result(200,"删除成功",null):new Result(500,"删除失败",null);
  10.     }
  11.     @Override
  12.     public Result update(Emp emp) {
  13.         int row = empDao.update(emp);
  14.         return row>0?new Result(200,"删除成功",null):new Result(500,"删除失败",null);
  15.     }
  16.     @Override
  17.     public Result insert(Emp emp) {
  18.         int row = empDao.insert(emp);
  19.         return row>0?new Result(200,"删除成功",emp):new Result(500,"删除失败",null);
  20.     }
  21.     @Override
  22.     public Result findById(Integer id) {
  23.         Emp emp = empDao.selectById(id);
  24.         return new Result(200,"查询成功",emp);
  25.     }
  26.     @Override
  27.     public Result findAll(Integer current, Integer pageSize) {
  28.         PageHelper.startPage(current,pageSize);
  29.         List<Emp> emps = empDao.selectAll();
  30.         PageInfo<Emp> pageInfo=new PageInfo<>(emps);
  31.         return new Result(200,"查询成功",pageInfo);
  32.     }
  33. }
复制代码
(6)controller接口层
  1. package com.zjw.controller;
  2. import com.zjw.entity.Emp;
  3. import com.zjw.service.EmpService;
  4. import com.zjw.vo.Result;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7. @RestController
  8. @RequestMapping("/emp")
  9. public class EmpController {
  10.     @Autowired
  11.     private EmpService empService;
  12.     @DeleteMapping
  13.     public Result deleteById(Integer id){
  14.         return empService.deleteById(id);
  15.     }
  16.     @PostMapping
  17.     public Result insert(@RequestBody Emp emp){
  18.         return empService.insert(emp);
  19.     }
  20.     @PutMapping
  21.     public Result update(@RequestBody Emp emp){
  22.         return empService.update(emp);
  23.     }
  24.     @GetMapping
  25.     public Result getById(Integer id){
  26.         return empService.findById(id);
  27.     }
  28.     @GetMapping("/getAll")
  29.     public Result getAll(Integer current,Integer pageSize){
  30.         return empService.findAll(current, pageSize);
  31.     }
  32. }
复制代码
8. springboot整合定时器。

可以在规定的时间内执行相应的代码。
比如: OSS文件上传---OSS的文件冗余的文件。----OSS的浪费。---->指定的时间自动删除。[夜间删除]
比如: 下单--->30分钟未支付---取消订单。
(1)引入定时器的依赖--
  1.         
  2.         <dependency>
  3.             <groupId>org.springframework.boot</groupId>
  4.             <artifactId>spring-boot-starter-quartz</artifactId>
  5.         </dependency>
复制代码
(2)编写定义的业务代码
  1. @Component
  2. public class My {
  3.     @Autowired
  4.     private EmpDao empDao;
  5.     //定时任务执行的代码
  6.     @Scheduled(cron = "0 0 2 * * ?")
  7.     public void show(){
  8.         System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~");
  9.         //可以写自己的写完代码
  10.         empDao.delete();
  11.     }
  12. }
复制代码
(3)开启定时的注解驱动


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表