zoukankan      html  css  js  c++  java
  • SpringBoot 整合 Mybatis + Mysql——XML配置方式

    一、介绍

      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中。

    3、代码实现

    demo工程文件结构:

    • 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、执行效果

     

    5、Demo源码

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

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

  • 相关阅读:
    IDEA导入jar包
    怎么在idea中新建package包,只有directory选项
    Python在自动化运维时经常会用到的方法
    SocketServer 网络服务框架
    导入自定义包
    socket编程
    在线安全清空慢查询日志slowlog
    OS X中微信双开
    OS X中crt中文乱码
    谈谈TCP中的TIME_WAIT
  • 原文地址:https://www.cnblogs.com/gavincoder/p/10105762.html
Copyright © 2011-2022 走看看