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数据源
-
- <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) 依赖-
- <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">
- <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分页插件
-
- <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工程并引入相关的依赖- 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
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.1</version>
- </dependency> com.github.pagehelper pagehelper-spring-boot-starter 1.4.5 org.springframework.boot spring-boot-starter-test test
复制代码 (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">
- <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 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)开启定时的注解驱动

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