springboot集成mybatis(springboot3.0 & jdk17)

文章只是演示如何集成 mybatis,并非 plus,而且只是集成,类似一个 demo,所以文章只适用于初学 mybatis 的同学


前言

文章内部已经处理了部分的依赖冲突,并且类似于纯净版本,大家可以直接把项目拉取下来作为自己的 base 去用

项目 gitee 链接


一、依赖

在 springboot 3 的环境下,关于 mybatis 只需要添加两个关键依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>3.0.2</version>
</dependency>

如果大家只是跟着文章学习如何将项目从 0 去集成 mybatis,还需要将添加 mysql 的依赖

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

这里需要注意,如果 spring-boot-starter-parent 的版本是 3.2.x,建议改成 3.1.x,否则会与 mybatis-spring-boot-starter 发生冲突。

二、配置

1.yml配置

spring:
  datasource:
    #数据库配置
    url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  # xml文件位置
  mapper-locations: classpath:mapper/*.xml
  # 实体类别名包扫描
  type-aliases-package: com.demo.mybatis.entity
  # 配置文件位置
  config_location: classpath:mybatis-config.xml

数据库的配置需要大家根据自己的数据去修改,千万别直接复制使用哈,mybatis 部分的配置如果大家是使用我项目结构的话是 ok 的,但是如果自己创建的项目的话,那也需要根据自己的项目去做适当的修改,可以参考我的文件结构,这里就不解释为什么了
在这里插入图片描述

2.配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
  <settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
    <!-- 如果数据为空的字段,默认该字段省略不显示,设置后查询数据为空是则返回null -->
    <setting name="callSettersOnNulls" value="true"/>
    <!-- 这个配置使全局的映射器启用或禁用缓存。系统默认值是true -->
    <setting name="cacheEnabled" value="false"/>
    <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 系统默认值是true -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。 系统默认值是true -->
    <setting name="multipleResultSetsEnabled" value="true"/>
    <!--使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。 系统默认值是true -->
    <setting name="useColumnLabel" value="true"/>
    <!--配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新 系统默认值是SIMPLE -->
    <setting name="defaultExecutorType" value="REUSE"/>
    <!--设置超时时间,它决定驱动等待一个数据库响应的时间。 系统默认值是null -->
    <setting name="defaultStatementTimeout" value="180"/>
    <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
    <setting name="aggressiveLazyLoading" value="false"/>
    <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
    <setting name="useGeneratedKeys" value="true"/>
    <!-- 给予被嵌套的resultMap以字段-属性的映射支持(NONE, PARTIAL, FULL) -->
    <setting name="autoMappingBehavior" value="FULL"/>
    <!-- 是否启用下划线与驼峰式命名规则的映射(如first_name => firstName) -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <setting name="defaultFetchSize" value="200"/>
    <!-- SESSION, STATEMENT -->
    <setting name="localCacheScope" value="SESSION"/>
    <!-- NULL, VARCHAR, OTHER -->
    <setting name="jdbcTypeForNull" value="OTHER"/>
    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    <setting name="logPrefix" value="[mybatis]"/>
    <!-- 打印查询语句 STDOUT_LOGGING, 不用显式开启,会自动查找日志实现-->
    <!-- <setting name="logImpl" value="SLF4J"/>-->
  </settings>
  <typeHandlers>
  </typeHandlers>
</configuration>

直接复制使用即可,文件位置参考我上面的文件结构图,也可自定义放置,位置跟 yml 配置中的位置一致就行


三.代码部分

3.1 实体

@Data
public class User {

  private String id;
  private Integer age;
  private String name;

}

如果该项目作为 base 去使用的话,实体类需要添加注解 @TableName,主键需要添加注解 @Id 和 @TableId(type = IdType.ASSIGN_UUID),当然也需要添加额外的依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.3.1</version>
</dependency>

3.2 持久层

@Mapper
public interface UserMapper {

  List<User> findAll();

}

3.3 xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.mybatis.mapper.UserMapper">

    <select id="UserMapper" resultType="com.demo.mybatis.entity.User">
        select * from user u
    </select>

</mapper>

3.4 控制层

@RestController
@RequestMapping("/user")
public class UserController {

  @Autowired
  private UserMapper userMapper;

  @GetMapping
  public List<User> findAll(){
    return userMapper.findAll();
  }
}

3.5 测试接口

方法测试路径:http://localhost:8087/user

如果出现以下结果,说明集成成功!

[
  {
    "id": "aaa",
    "age": 15,
    "name": "zhangsan"
  }
]

因为接口是查询,所以需要提前插入数据哈,也可以提前执行下面的 sql 语句

DROP TABLE IF EXISTS `user`

CREATE TABLE `user` (
                        `id` varchar(64) NOT NULL,
                        `age` int DEFAULT NULL,
                        `name` varchar(255) DEFAULT NULL,
                        PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;


INSERT INTO `user` (`id`, `age`, `name`) VALUES ('aaa', 15, 'zhangsan');

四.总结

集成过程不难,大家可以按照步骤来,有问题随时留言,都会看的,文章已经测试过是没问题的,欢迎大家建议指正...

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值