Spring Boot整合Mybatis

Spring Boot整合Mybatis

1. Lombok 插件

1.1 Maven 坐标查询

网址: https://mvnrepository.com/ 可以现在查找maven包的信息
在这里插入图片描述

1.2 添加 jar 包文件

<!--添加lombok依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

1.3 Lombok 使用

作用: 通过程序自动生成实体对象的 get/set/toString/equals/hasCode 等方法
链式加载原理: 重启了POJO的set方法,返回当前对象

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

常用注解:

@Data	// 省略了 get/set/toString/equals/hasCode 方法
@NoArgsConstructor	// 省略了无参构造
@AllArgsConstructor	// 省略了全参构造  但是必须先添加无参构造
/**
 * 链式编程相当于重写了set()
 */
@Accessors(chain = true)	// 连市加载结构
public class User {
    private Integer id;
    private String name;
}

1.4 关于 Lombok 的简单面试问题

问题: Lombok的使用需要在IDE中提前安装插件,如果项目在Linux系统中部署发布,是否需要提前安装插件?
答案: 不要!!!
原因: Lombok插件只在编译期有效,(编译期: 由 xxx.java 文件编译为 xxx.class 文件).在打包之前的.class文件中已经包含了 set/get 等方法,所以项目打包后可以直接运行,无需安装插件.

2. 导入数据库

2.1 检查数据库是否可用

说明: 正常的情况下mysql 服务项开机自启,有时由于某种原先因,导致数据库服务启动失败.
问题描述: 数据库连接报错,显示链接不可用
检查服务项: 打开任务管理器
在这里插入图片描述

2.2 创建项目

2.2.1 新建maven项目

在这里插入图片描述

2.2.2 配置项目的pom文件

添加jar包依赖

<!--
    定位: SpringBoot主要的作用整合SSM,使得框架的使用更加简化
    原则: "开箱即用"
    parent主要的作用:
           1.SpringBoot在内部兼容了当下几乎所有的第三方框架
           2.SpringBoot官网已经将所有兼容的版本进行了定义
            (几乎解决了版本冲突问题)以后几乎不写版本号
    概括: parent标签中管理其他的项目版本信息.
-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.2</version>
    <relativePath/>
</parent>

<properties>
    <java.version>1.8</java.version>
    <!--跳过测试类打包-->
    <skipTests>true</skipTests>
</properties>

<!--原则: 按需导入  -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <!--springboot启动项(器)在包的内部SpringBoot
        已经完成了项目的"整合"(配置) 用户拿来就用
        web导入SpringMVC
        -->
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--支持热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>

    <!--添加lombok依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>


</dependencies>

<!--SpringBoot项目与Maven整合的一个插件
    可以通过插件 执行项目打包/测试/文档生成等操作
    注意事项: 该插件不能省略
    项目发布时: java -jar xxxx.jar  报错:没有主清单信息!!!!
-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.5.2</version>
        </plugin>
    </plugins>
</build>
2.2.3 编辑主启动类
// 主启动类
@SpringBootApplication
public class RunApp {
	// 标准写法
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class, args);
    }
}
2.2.4 编辑pojo实体对象

说明: 一般实体对象只需要添加 get/set/toString 等方法,无需添加构造方法

@Data
@Accessors(chain = true)
// 实体对象的作用就是用来实现参数传递
public class User implements Serializable { 
	// 序列化 保证数据完整性
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}
2.2.5 序列化作用

一般如果需要对象进行传递时,要求pojo对象必须实现序列化接口,否则数据出桉树必然报错
在这里插入图片描述

2.3 整合Mybatis

2.3.1 Spring Boot整合Mybatis步骤
  1. 添加jar包文件依赖
  2. Spring Boot整合Mybatis 添加配置文件
    1. 连接数据库
    2. Spring Boot 整合Mybatis
  3. 创建Mapper接口
  4. 创建XML映射文件
2.3.2 导入 jar 包文件
  1. mybatis包

  2. 数据库驱动包

  3. JDBC包

     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <scope>runtime</scope>
     </dependency>
    
     <!--springBoot数据库连接  -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
     </dependency>
    
     <!--spring整合mybatis  暂时  -->
     <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
         <version>2.2.0</version>
     </dependency>
    
2.3.3 关于数据源配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root
  1. serverTimezone=GMT%2B8 设置时区
  2. useUnicode=true 是否使用Unicode编码
  3. characterEncoding=utf8 设定字符集
  4. autoReconnect=true 是否自动重连
  5. allowMultiQueries=true 是否允许批量操作
2.3.4 Mybatis配置文件
server:
  port: 8090

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root
    #如果数据库密码以数字0开头 则必须使用""号包裹
    #password: "01234"

#SpringBoot整合Mybatis配置
mybatis:
  type-aliases-package: com.jt.pojo
  mapper-locations: classpath:/mybatis/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true
2.3.5 编辑UserMapper接口/映射文件
  1. 编辑UserMapper接口

     public interface UserMapper {
     	// 查询所有表的数据
         List<User> getAll();
     }
    
  2. 编辑UserMapper.xml映射文件

     <!--规则: namespace必须与接口一一对应  -->
     <mapper namespace="com.jt.mapper.UserMapper">
     
         <!--CRUD
             定义别名包: 添加了别名包之后可以简化resultType编辑.
         -->
         <select id="getAll" resultType="User">
             select * from demo_user
         </select>
     
         <!--驼峰命名规则
             表字段:  user_id,user_name
             对象的属性: userId,userName
             resultType: 保证属性与字段名称必须一致.
             Mybatis提供了驼峰命名规则:
             规则:  字
             段user_id~~~去除_线~~~之后映射对象的属性
             userId
         -->
     
     </mapper>
    

2.4 测试Spring Boot整合

2.4.1 Spring 容器管理Mapper接口

说明: 利用@MapperScan注解为接口创建代理对象

// 主启动类
@SpringBootApplication
// Spring容器内部为接口创建代理对象
// JDK的动态代理对象
@MapperScan("com.jt.mapper")

public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class, args);
    }
}
2.4.2 编辑测试案例
/**
 * 要求:
 *      1.测试包路径必须在主启动类的同包及子包中.
 *      2.从Spring容器中可以获取对象进行调用.
 */
@SpringBootTest
public class TestSpringBoot {
    /**
     * 调用mapper   service  controller!!单元测试~~
     */
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testGetAll(){
        System.out.println(userMapper.getClass());
        List<User> userList = userMapper.getAll();
        System.out.println(userList);
    }
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘刘刘刘刘先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值