当前位置:首页 > Java技术 > SpringBoot 整合 Mybatis + Mysql——XML配置方式

SpringBoot 整合 Mybatis + Mysql——XML配置方式

2022年11月09日 16:20:15Java技术17

一、介绍

  SpringBoot有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate,本文主要讨论集成Mybatis方式。

  SpringBoot整合Mybatis也有两种方式,分别为XML配置方式和注解方式,主要优势点如下:

  • XML配置方式:隔离sql和业务代码,清晰表达sql,尤其对于较长的sql。
  • 注解方式:代码更加精简,方便。

本文主要讨论XML配置方式,后续文章讨论注解方式。

 

二、SpringBoot整合Mybatis连接Mysql数据库

1、添加MySQL 连接驱动依赖、SpringBoot Mybatis 依赖,完整pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>hello</name>
    <description>Demo project for Spring Boot</description>

    <!--版本信息-->
    <properties>
        <mybatis-spring-boot>1.3.0</mybatis-spring-boot>
        <mysql-connector>5.1.39</mysql-connector>
    </properties>
    
   <!-- SpringBoot启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <!-- Spring Boot Web 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- MySQL 连接驱动依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector}</version>
        </dependency>

        <!-- SpringBoot Mybatis 依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis-spring-boot}</version>
        </dependency>

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

        <!-- logback 依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>

         <!--Slf4j 依赖-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
        </dependency>
    </dependencies>

</project>

注:

整合MyBatis的核心依赖MyBatis-Spring-Boot-Starter提供:

  • 自动检测现有的DataSource
  • 将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递
  • 将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
  • 自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。

因此,引入该Starter之后,只需要定义一个DataSource即可(application.properties中可配置),它会自动创建使用该DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。会自动扫描你的Mappers,连接到SqlSessionTemplate,并注册到Spring上下文中。

 

2、配置application.yml文件

  • 配置数据库连接信息(数据源)

spring:
    #数据源
  datasource:
    url: jdbc:mysql://localhost:3306/springbootdb??useUnicode=true&amp;characterEncoding=UTF-8
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
  • 配置mybatis

#mybatis配置
mybatis:
  typeAliasesPackage: com.example.mybaitsxml.dao.entity
  mapperLocations: classpath:mapper/*.xml
  #configLocation: classpath:/mybatis-config.xml

注:通常,若mybatis配置信息较少,只是针对基本配置无需复杂配置,则只需在application.yml文件中配置即可,否则最好配置在 mybatis-config.xml中。

缺少mapperLocations配置,出现报错:

There was an unexpected error (type=Internal Server Error, status=500).
Invalid bound statement (not found): com.example.mybatis.cache.dao.mapper.***

 

3、代码实现

demo工程文件结构:

SpringBoot 整合 Mybatis + Mysql——XML配置方式 _ JavaClub全栈架构师技术笔记

  • controller层

@Slf4j
@RestController
@RequestMapping("/web")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/queryAllUsers")
    public List<User> queryAllUsers(){
        return userService.queryAllUsers();
    }
}
  • service层(实现)

@Slf4j
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> queryAllUsers() {
        log.info("/queryAllUsers start...");
        return userMapper.queryAllUsers();
    }
}
  • dao层

dao层分为数据库实体类(entity)和数据库操作mapper接口(mapper)

entity:

@Data
public class User {
    private String name ;
    private String sex;
    private Integer age;
    private Integer classNo;

}

mapper:

public interface UserMapper {
    List<User> queryAllUsers();
}
  • mapper.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.example.mybaitsxml.dao.mapper.UserMapper" >
    <resultMap id ="UserInfoMap" type="com.example.mybaitsxml.dao.entity.User">
        <result column="name_" property="name"/>
        <result column="sex" property="sex"/>
        <result column="age" property="age"/>
        <result column="class_no" property="classNo"/>
    </resultMap>

    <select id = "queryAllUsers" resultMap="UserInfoMap">
        select
          name_,
          sex,
          age,
          class_no
        from
          tbl_user
    </select>
</mapper>

 

4、执行效果

SpringBoot 整合 Mybatis + Mysql——XML配置方式 _ JavaClub全栈架构师技术笔记

 

5、Demo源码

  本文示例源码已托管到本人Github仓库,有需要的朋友请自行拉取。

地址:https://github.com/gavincoder/SpringBoot--Learning

 

作者:马非白即黑
来源链接:https://www.cnblogs.com/gavincoder/p/10105762.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68835.html

分享给朋友:

“SpringBoot 整合 Mybatis + Mysql——XML配置方式” 的相关文章

SpringBoot项目改为SpringCloud项目使用nacos作为注册中心

SpringBoot项目改为SpringCloud项目使用nacos作为注册中心

本章讲解的是在不改变原有业务的情况下将springboot改为springcloud项目使用nacos作为注册中心 首先在官网下载好nacos注册中心,在bin目录中startup.cmd文件为启动命令默认端口号是8888 接下来修改原有项目依赖...

专门为小白准备的入门级mybatis

专门为小白准备的入门级mybatis

引入依赖        <dependency>             <gr...

Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)

Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)

代码示例 本文示例读者可以通过查看下面仓库的中的 alibaba/java/ParentClass.java : Github:https://github.com/JeffLi1993/java-core-learning-exam...

Spring Boot 2.x :通过 spring

Spring Boot 2.x :通过 spring

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本文内容 HBase 简介和应用场景 spring-boot-starter-hbase 开源简介 集成 HB...

SpringBoot 整合mapstruct|赶紧丢掉BeanUtils吧

SpringBoot 整合mapstruct|赶紧丢掉BeanUtils吧

代码已经上传到码云:https://gitee.com/lezaiclub/springboot-hyper-integration.git,欢迎白嫖 前言 在项目中,如果我们要遵循分层领域模型规约: 话,肯定避免不了在DTO、VO、BO、A...

Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)

Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! WebFlux 系列教程大纲 一、背景 大家都知道,Spring Framework 是 Java/Spring 应用程序跨...

Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling

Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本文内容 为什么要全局异常处理? WebFlux REST 全局异常处理实战 小结 摘录...

Spring是什么

简单的讲,Spring是一个轻量级的应用程序开发框架。它除了帮助我们管理对象及其依赖关系。还提供了像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还能帮我管理最头疼的数据库事务,本身提供了一套简单的JDBC访问实现,提供了与第三方数据访问框架集成(如Hibernate,J...

MySQL查询JSON类型字段中某个属性值

MySQL查询JSON类型字段中某个属性值

只支持MySQL5.7以上的版本 user表中有如下数据: id profile 1 {“age”: 20, “name”: “...

mysql 查询1小时内

mysql 查询1小时内

由于项目的需要经常查询一个小时之内的数据,接下来吾爱编程为大家分享一下使用Mysql查询一个小时之内的数据的sql,有需要的小伙伴可以参考一下: 1、方法一: (1)、sql写法: SELECT * FROM 表名&...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。