SpringBoot3数据访问

SpringBoot3数据访问

SpringBoot整合 Spring、SpringMVC、MyBatis进行数据访问开发。

整合SSM场景

整合步骤

1、创建SSM整合项目

①数据库准备

sql 复制代码
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `login_name` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户名称',
  `nick_name` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户昵称',
  `password` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户密码',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `t_user` VALUES (1, 'louie', '路易', '1a1a');

②场景导入,可以在创项目的时候进行选择

xml 复制代码
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

③创建数据源

application.properties

properties 复制代码
#1、先配置数据源信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=zkpk

④创建实体类TUser

java 复制代码
package com.louis.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author XRY
 * @date 2023年07月13日17:02
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TUser {
    private Long id;
    private String loginName;
    private String nickName;
    private String password;
}

⑤创建Mapper接口

java 复制代码
public interface UserMapper {
    /**
     * 1、每个方法都在Mapper文件中有一个sql标签对应
     * 2、所有参数都应该用@Param进行签名,以后使用指定的名字在SQL中取值
     * @param id
     * @return
     */
    TUser getUserById(@Param("id") Long id);
}

⑥创建Mapper.xml文件

在写Mapper时比较麻烦,可以在IDEA中安装MyBatisX插件,它可以生成xml。

MyBatis使用简介

xml 复制代码
<?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.louis.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.louis.bean.TUser">
            <id property="id" column="id" jdbcType="BIGINT"/>
            <result property="loginName" column="login_name" jdbcType="VARCHAR"/>
            <result property="nickName" column="nick_name" jdbcType="VARCHAR"/>
            <result property="password" column="password" jdbcType="VARCHAR"/>
    </resultMap>

    <sql id="Base_Column_List">
        id,login_name,nick_name,
        password
    </sql>
    <select id="getUserById" resultType="com.louis.bean.TUser">
        select * from t_user where id = #{id}
    </select>
</mapper>

⑦mapper扫描设置

java 复制代码
/**
 * 1、告诉MyBatis,扫描哪个包下的所有接口
 * 2、告诉MyBatis,每个接口的xml文件都在那里(使用配置)
 * mybatis.mapper-locations=classpath:/mapper/*.xml
 * 3、MyBatis自动关联绑定
 */

@MapperScan(basePackages = "com.louis.mapper.UserMapper")
@SpringBootApplication
public class Boot3SsmApplication {

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

}

application.properties

properties 复制代码
#2、配置整合mybatis
mybatis.mapper-locations=classpath:/mapper/*.xml
#开启驼峰命名规则
mybatis.configuration.map-underscore-to-camel-case=true

⑧测试连接是否成功

UserController

java 复制代码
@RestController
public class UserController {
    @Autowired
    UserMapper userMapper;

    /**
     * 返回User的json数据
     * @param id
     * @return
     */
    @GetMapping("/user/{id}")
    public TUser getUser(@PathVariable("id") Long id){
        TUser user = userMapper.getUserById(id);
        return user;
    }
}

SSM整合总结

①导入mybatis-spring-boot-starter

②配置数据源信息

③配置mybatis的mapper接口描述与xml映射文件扫描

④编写bean,mapper,生成xml,编写sql进行crud

⑤效果

a、所有sql写在xml中

b、所有mybatis配置写在application.properties下面

2、自动配置原理

jdbc场景的自动配置:配置了数据源等基本信息

mybatis-spring-boot-starter导入spring-boot-starter-jdbc,jdbc是操作数据库的场景

jdbc场景的几个自动配置

properties 复制代码
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
//数据源的自动配置,所有与数据源有关的配置都绑定在`DataSourceProperties`
//默认使用`HikariDataSource`
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration
//基于XA二阶提交协议的分布式事务数据源
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
//数据源事务管理器

具有的底层能力:数据源、jdbcTemplate、事务

MyBatisAutConfiguration:配置了MyBatis的整合流程

mybatis-spring-boot-starter导入了mybatis-spring-boot-autoconfigure默认加载两个自动配置类

properties 复制代码
org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
//MyBatis的所有配置邦定在`MybatisProperties`,必须在数据源配置号之后才配置
//给容器中放`SqlSessionFactory`组件,创建和数据库的一次会话
//给容器中放了`SqlSessionTemplate`组件。操作数据库
小贴士

如何分析场景导入后,开启了那些自动配置类?

方式一:

找classpath:/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个类生效。
方式二:

在application.properties中添加配置debug=true,在控制台可以查看类是否导入。

生效:

未生效:

相关推荐
kangkang-1 小时前
PC端基于SpringBoot架构控制无人机(三):系统架构设计
java·架构·无人机
界面开发小八哥3 小时前
「Java EE开发指南」如何用MyEclipse创建一个WEB项目?(三)
java·ide·java-ee·myeclipse
idolyXyz3 小时前
[java: Cleaner]-一文述之
java
一碗谦谦粉3 小时前
Maven 依赖调解的两大原则
java·maven
netyeaxi4 小时前
Java:使用spring-boot + mybatis如何打印SQL日志?
java·spring·mybatis
收破烂的小熊猫~4 小时前
《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
java·开发语言·设计模式
小七mod4 小时前
【MyBatis】MyBatis与Spring和Spring Boot整合原理
spring boot·spring·mybatis
猴哥源码4 小时前
基于Java+SpringBoot的动物领养平台
java·spring boot
老任与码4 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
小兵张健4 小时前
武汉拿下 23k offer 经历
java·面试·ai编程