SpringBoot3数据访问

SpringBoot3数据访问

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

整合SSM场景

整合步骤

1、创建SSM整合项目

①数据库准备

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');

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

<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>3.0.2version>
dependency>
<dependency>
    <groupId>com.mysqlgroupId>
    <artifactId>mysql-connector-jartifactId>
    <scope>runtimescope>
dependency>

③创建数据源

application.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

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接口

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

⑥创建Mapper.xml文件

在写Mapper时比较麻烦,可以在IDEA中安装MyBatisX插件,它可以生成xml。
SpringBoot3数据访问_第1张图片
MyBatis使用简介


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>

SpringBoot3数据访问_第2张图片

⑦mapper扫描设置

/**
 * 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

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

⑧测试连接是否成功

UserController

@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;
    }
}

SpringBoot3数据访问_第3张图片

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场景的几个自动配置

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默认加载两个自动配置类

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,在控制台可以查看类是否导入。
生效:
SpringBoot3数据访问_第4张图片
未生效:
SpringBoot3数据访问_第5张图片

你可能感兴趣的:(SpringBoot3,java,mysql,mybatis)