Spring全家桶之spring boot(三)

    spring boot集成mybatis

    众所周知,spring与springmvc可以无缝集成,而mybatis不是spring旗下的框架,因此需要进行配置,当然,这里的配置也是非常简单的。

    1、首先我们需要创建一个数据库表:

   CREATE TABLE `learnmybatis`.`t_student` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(20) NULL,
  `age` INT NULL,
  `score` DOUBLE NULL,
  PRIMARY KEY (`id`));  

    2、这里我们在Project中创建一个新的Model,创建模块时与之前不同的是我们需要勾选一些新的依赖,这样就不需要手动去添加了。

    

    

    

    勾选完之后pom.xml文件中会自动添加spring boot起步依赖、mybatis起步依赖、mysql驱动依赖、spring boot热部署依赖、lombok依赖,之后我们仍需手动添加alibaba的druid数据库连接池依赖

    <!-- 加载mybatis整合springboot -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!-- MySQL的jdbc驱动包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- springboot 开发自动热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- alibaba的druid数据库连接池 该依赖需要手动添加-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>

    3、在pom.xml文件build标签下添加如下代码(目的是将mybatis配置文件添加到target目录下,否则在运行mybatis的时候会报找不到xml文件的错误):

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

    pom.xml中我们加了让maven将xml文件也编译放到target目录下的代码,除了将mapper放到dao包下这种方式之外,还可以直接将mapper文件放到resources下。在resources下创建mappers目录,然后将mapper.xml文件放到这个目录下。(两种方法选其一即可,如果放在resources目录下要记得重新编译)

    修改application.properties配置文件,指定mapper文件路径,如果采用这种方法,则在pom.xml中删除上述resource中的配置: 

#指定mapper文件的位置
mybatis.mapper-locations=classpath:mappers/*.xml

    4、添加数据源相关配置,在application.properties配置文件中添加如下代码: 

#指定mapper文件的位置mybatis.mapper-locations=classpath:com/scm/mybatis/mapper/*.xml#指定bean的位置mybatis.type-aliases-package=com.scm.mybatis.bean

#数据源spring.datasource.username=rootspring.datasource.password=spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

#查看sql语句日志logging.level.com.monkey1024.mapper=debug

    注意:注意上面的serverTimezone=Asia/Shanghai,这里如果写成serverTimezone=UTC或者GMT的话,在插入或更新数据的时候,日期可能会有问题,因为我们中国所在的时区是东八区。

    5、 在创建bean目录,并在该目录下创建Student类

package com.scm.mybatis.bean;

public class Student {

        private Integer id;

        private String name;

        private Integer age;

        private Double score;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Double getScore() {
        return score;
    }

    public void setScore(Double score) {
        this.score = score;
    }
}

    6、创建mapper目录,并在该目录下创建Mapper和dao接口

      分别创建StudentMapper.xml和StudentMapper类

<?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.scm.mybatis.mapper.StudentMapper">
    <!--查询多条数据-->
    <select id="selectAllStudent" resultType="student">
        SELECT id,name,age,score FROM t_student
    </select>
</mapper>
package com.scm.mybatis.mapper;

import com.scm.mybatis.bean.Student;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper//在dao接口上加入Mapper注解,这样springboot就可以扫描到
public interface StudentMapper {
    List<Student> selectAllStudent();
}

    我们在dao层的接口上添加了一个@Mapper注解,这样spring boot就可以扫描到该接口从而使用mybatis动态代理。除了这种方式之外还可以在spring boot的启动类上添加@MapperScan注解,这样就无需在dao层接口上添加@Mapper注解了。另一种方法如下(两种方法选其一即可):

@SpringBootApplication
@MapperScan("com.scm.mybatis.mapper")//扫描mapper文件
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

    

    7、创建service目录,并在该目录下分别创建StudentService接口和StudentServiceImpl实现类

package com.scm.mybatis.service;

import com.scm.mybatis.bean.Student;
import java.util.List;

public interface StudentService {
    List<Student> selectAllStudent();
}
package com.scm.mybatis.service;

import com.scm.mybatis.bean.Student;
import com.scm.mybatis.mapper.StudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentServiceImpl implements StudentService{
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public List<Student> selectAllStudent() {
        return studentMapper.selectAllStudent();
    }
}

    8、创建controller目录,并在该目录下创建MybatisController类

package com.scm.mybatis.controller;

import com.scm.mybatis.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MybatisController {

    @Autowired
    private StudentService studentService;

    @RequestMapping("/find")
    @ResponseBody
    public Object findAllStudent() {
        return studentService.selectAllStudent();
    }
}

    之后运行spring boot启动类,在浏览器中发送请求即可。

    spring boot中开启事务

    在spring boot中开启事务也非常简单通过下面两步即可:

    1、在入口类中使用注解 @EnableTransactionManagement 开启事务支持

@SpringBootApplication
@EnableTransactionManagement //开启事务支持
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

    2、在访问数据库的Service方法上添加注解 @Transactional 即可

@Service
@Transactional//开启事务
public class StudentServiceImpl implements StudentService{
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public List<Student> selectAllStudent() {
        return studentMapper.selectAllStudent();
    }
}

    Lombok使用方法

   在创建项目的时候我们添加了lombok依赖,那么lombok到底有什么用呢?

   在之前所编写的代码中,我们写了很多bean,这里面加了很多set、get方法,这些方法冗余,但却也不可缺少。这里我们可以使用lombok包,通过该工具,就不用在bean源码中手动添加set、get方法了,除此之外equals,hashcode,toString方法也无需手动在源码中添加了。lombok会在生成的bean的class字节码中添加这些方法,在使用lombok之后,代码就清爽多了。

    1、检查pom.xml中是否存在lombok依赖,若存在则在idea中添加lombok插件,ctrl+alt+s打开设置,在Plugins中搜索lombok

    

    2、插件安装完成之后,在Student类上面加上@Data注解,然后set、get等方法就可以去掉了:

package com.scm.mybatis.bean;

import lombok.Data;

@Data
public class Student {

        private Integer id;

        private String name;

        private Integer age;

        private Double score;
}

    这样我们的代码是不是看起来就简洁了许多呢,重新编译之后打开target目录进入bean包查看Student类会发现set、get、equals、toString、canEqual方法都已经自动写好了。

原文地址:https://www.cnblogs.com/scm2019/p/11330232.html

时间: 2024-11-08 17:28:21

Spring全家桶之spring boot(三)的相关文章

Spring全家桶之spring boot(四)

spring boot拦截器.过滤器.servlet和健康检查机制  spring boot拦截器 spring boot配置拦截器与原来大致相同,只是需要在拦截器的配置类上添加@Configuration注解,让spirng boot将拦截器加入spring容器中. 1.首先这里我们像之前一样创建一个普通的拦截器 package com.scm.mybatis.Interceptor; import org.springframework.web.servlet.HandlerIntercep

Spring全家桶带来云时代的软件开发变革

快速发展和变化的业务需求所带来的挑战正在驱动现代企业数字化转型,云原生应用系统的构建是其中最为重要环节之一. 目前,云原生应用开发框架Spring(包括Spring MVC.Spring Boot.Spring Cloud.Spring Cloud Dataflow)已经占据Java软件开发框架的统治地位.在Snyk最新的2018 JVM生态调查中表明:40%被调研的开发者正在使用Spring Boot,36%被调研的开发者正在使用Spring MVC:2018年也是Spring Boot首次超

【转】Spring全家桶

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶.它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案. 很多研发人员把spring看作心目中最好的java项目,没有之一. 所以这是重点也是难点,工作中必须会,面试时肯定考. 那么,今天花费20分钟,梳理Spring框架相关知识. Spring系列包含非常多的项目,可以满足java开发中的方方面面. 先来看常用框架的知识点汇总,如图: Ⅰ

Spring全家桶——SpringBoot之AOP详解

Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面. 准备工作 首先,使用AOP要在build.gradle中加入依赖 //引入AOP依赖 compile "org.springframework.boot:spring-boot-starter-aop:${springBootVersion}" 然后在application.yml中

一篇文章带你搞懂spring全家桶套餐

spring全家桶里都有哪些食物 上期我们讲了spring和springmvc两个框架的基础知识和学习路线,而这期内容,我们将围绕着spring全家桶展开来讨论. 大家应该都知道,按照出现的顺序,spring全家桶大概包含了spring.springmvc.springboot以及springcloud,从开胃小菜spring到满汉全席springcloud,spring全家桶可谓Java工程师的必备大餐,那么,我们不妨先来看看,spring全家桶是如何从光杆司令spring发展到如今的庞大家族

玩转Spring全家桶

庸置疑,Spring 早已成为 Java 后端开发事实上的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分 Java 后端程序员在日常工作中也会接触到 Spring ,因此,如何用好 Spring ,也就成为 Java 程序员的必修课之一. 同时,Spring Boot 和 Spring Cloud 的出现,可以帮助工程师更好地基于 Spring 及各种基础设施来快速搭建系统,可以说,它们的诞生又一次解放了大家的生产力. 因此,Spring Boot 和 Spring Clou

Spring全家桶系列--SpringBoot与Mybatis结合

Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate,不过在mybatis中sql语句的灵活性,可优化性比较强,这也是现在大多数人选择的原因. mapper.xml.dao接口.实体类自动生成 下载 :https://pan.baidu.com/s/1JY7Xduk5E3KPm58AjnueuQ 工具包 1.1 修改配置文件generator.xml 解压之后,这里把文件拷贝到了C:\resources\genera

如何掌握 Spring,Spring Boot 全家桶?系统学习 Spring 的大纲一份(实战教学)

搞个推荐! 资深的 Spring 工程师应该都知道 Spring 界的大牛丁雪丰.作为平安壹钱包的高级架构师之余,他不仅翻译了<Spring Boot 实战><Spring 攻略>两本书,还出了一门一揽子解决 Spring 全家桶的课程<玩转 Spring 全家桶>. 他在推荐自己的这门课程时说, 市面上有很多书和教程,但对于很多开发人员,在学习 Spring 的时候,难免会遇到这些问题: 官方文档虽然全面,但面对庞杂的知识体系,很多初学者一时不知该从哪里下手: 手册式

【Spring Cloud】全家桶介绍(一)

摘自:https://www.cnblogs.com/iUtopia/p/11492072.html 一.微服务架构# 1.微服务架构简介# 1.1.分布式:不同的功能模块部署在不同的服务器上,减轻网站高并发带来的压力. 1.2.集群:多台服务器上部署相同应用构成一个集群,通过负载均衡共同向外提供服务. 1.3.微服务:微服务架构模式就是将web应用拆分为一系列小的服务模块,这些模块可以独立地编译.部署,并通过各自暴露的API接口通讯,共同组成一个web应用. 1.4.SpringCloud是基