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,在控制台可以查看类是否导入。

生效:

未生效:

相关推荐
今天背单词了吗98015 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
天天摸鱼的java工程师18 分钟前
使用 Spring Boot 整合高德地图实现路线规划功能
java·后端
东阳马生架构33 分钟前
订单初版—2.生单链路中的技术问题说明文档
java
咖啡啡不加糖1 小时前
暴力破解漏洞与命令执行漏洞
java·后端·web安全
风象南1 小时前
SpringBoot敏感配置项加密与解密实战
java·spring boot·后端
DKPT1 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
kk在加油1 小时前
Mysql锁机制与优化实践以及MVCC底层原理剖析
数据库·sql·mysql
Percep_gan1 小时前
idea的使用小技巧,个人向
java·ide·intellij-idea
缘来是庄1 小时前
设计模式之迭代器模式
java·设计模式·迭代器模式
合作小小程序员小小店1 小时前
web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql
mysql·sqlserver·性能优化·asp.net·mvc