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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM