SpringBoot初體驗之整合MyBatis和SpringMVC


  使用過SpringBoot的同學都知道,SpringBoot的pom.xml中的坐標都是按功能導入的,jar包之間的依賴SpringBoot底層已經幫我們做好了,例如我們要整合SprngMVC,只需要導入SpringMVC的起步依賴就可以了,SpringBoot會幫我們導入Spring和SpringMVC整合需要的jar包。

  SpringBoot是基於Spring4.0設計的,不僅繼承了Spring框架原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩定性等問題得到了很好的解決。

  SpringBoot的特點: 

    為基於Spring的開發提供更快的入門體驗
    開箱即用,沒有代碼生成,也無需XML配置。同時也可以修改默認值來滿足特定的需求
    提供了一些大型項目中常見的非功能性特性,如嵌入式服務器、安全、指標,健康檢測、外部配置等
    SpringBoot不是對Spring功能上的增強,而是提供了一種快速使用Spring的方式

  SpringBoot的核心功能

  起步依賴

  起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。簡單的說,起步依賴就是將具備某種功能的坐標打包到一起,並提供一些默認的功能。

  自動配置

  SpringBoot的自動配置是一個運行時(更准確地說,是應用程序啟動時)的過程,考慮了眾多因素,才決定Spring配置應該用哪個,不該用哪個。該過程是Spring自動完成的。

下面給大家介紹一下,SpringBoot+SpringMVC+MyBatis快速整合搭建的過程,實現數據數據查詢返回到前端進行展示;

一、數據庫環境搭建

1、首先使用Navicat for MySql連接MySql數據庫,創建一個新的數據庫或者使用某一個已經存在的數據庫,我這里新創建了一個test數據庫,並新建一張user表,建表SQL和插入測試數據的SQL如下:

<!--SQL建表語句-->
CREATE TABLE `user` (
    `id` INT (50) NOT NULL,
    `name` VARCHAR (100) NOT NULL,
    `age` INT (50) NOT NULL,
    `address` VARCHAR (200) NOT NULL,
    PRIMARY KEY (`id`)
);
<!--插入數據-->
INSERT INTO USER (id,name,age,address)VALUES(1,'小謝',18,'上海市');
INSERT INTO USER (id,name,age,address)VALUES(2,'小尚',18,'上海市');
INSERT INTO USER (id,name,age,address)VALUES(3,'小楠',18,'天津市');
INSERT INTO USER (id,name,age,address)VALUES(4,'小勛',18,'鄭州市');
INSERT INTO USER (id,name,age,address)VALUES(5,'小喬',18,'鄭州市');
INSERT INTO USER (id,name,age,address)VALUES(6,'小威',18,'鄭州市');
INSERT INTO USER (id,name,age,address)VALUES(7,'小歡',18,'武漢市');

二、創建項目

1、使用IDEA創建一個Maven項目

 2、項目的相關信息填寫一下;

 3、點擊Finish,等待項目創建完成;

 三、SpringBoot+SpringMVC+MyBatis整合

 1、SpringBoot要求,項目要繼承SpringBoot的起步依賴spring-boot-starter-parent;

<!--SpringBoot的起步依賴spring-boot-starter-parent-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

同時整合SpringMVC,要導入web的啟動依賴;

 <dependencies>
        <!--web的啟動依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

整合MyBatis,要導入mybatis起步依賴;

 <!--mybatis起步依賴-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

還有MySql連接驅動;

<!-- MySQL連接驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

2、導入依賴坐標后的pom.xml文件為:

<?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>
    <!--SpringBoot的起步依賴spring-boot-starter-parent-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <groupId>com.xyfer</groupId>
    <artifactId>springbootDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--SpringBoot要集成SpringMVC啟動依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis起步依賴-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- MySQL連接驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

</project>

至此,SpringBoot+SpringMVC+MyBatis整合的依賴jar包已經全部導入完畢,底層SpringBoot幫我們已經做好了jar包的版本管理;

3、配置數據庫信息;

SpringBoot默認掃描classpath下面的application.properties文件,在src\main\resources文件夾下面創建application.properties文件:

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

#spring集成Mybatis環境
#pojo別名掃描包
mybatis.type-aliases-package=com.xyfer.domain
#加載Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

五、編寫java代碼

1、根據數據庫表信息,在com.xyfer.domain包下面編寫實體類User.java;

package com.xyfer.domain;

public class User {

    private int id;
    private String name;
    private int age;
    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

2、在com.xyfer.controller包下面編寫UserController.java類;

package com.xyfer.controller;

import com.xyfer.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {

    @Autowired
    private UserService userService;
    @RequestMapping("/test")
    @ResponseBody
    public String test(){

        return userService.findAll().toString();
    }

}

3、在com.xyfer.service包下面編寫接口UserService.java;

package com.xyfer.service;

import com.xyfer.domain.User;

import java.util.List;

public interface UserService {
    /**
     * 查詢所有用戶信息
     * @return
     */
    public List<User> findAll();
}

4、在com.xyfer.service.impl包下編寫實現類UserServiceImpl.java;

package com.xyfer.service.impl;


import com.xyfer.dao.UserDao;
import com.xyfer.domain.User;
import com.xyfer.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Service
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;
    @Override
    public List<User> findAll() {

        return userDao.findAll();
    }
}

5、在com.xyfer.service.dao下編寫接口UserDao.java;

package com.xyfer.dao;

import com.xyfer.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
@Mapper
public interface UserDao {
    /**
     * 查詢所有用戶信息
     * @return
     */
    public List<User> findAll();
}

6、由於在application.properties中配置的Mapper文件的位置如下;

 7、所以在resources下新建文件夾mapper,並新建文件UserMapper.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.xyfer.dao.UserDao">
    <select id="findAll" resultType="user">
        select * from user;
    </select>
</mapper>

至此,SpringBoot+SpringMVC+MyBatis快速整合搭建一個項目已經完成;

六、啟動項目並測試

1、通過引導類啟動項目,控制台打印項目信息,項目啟動成功;

 2、在瀏覽器輸入訪問地址:http://localhost:8080/test,成功返回數據庫中一開始插入的數據;

至此,我們已經完成SpringBoot+SpringMVC+MyBatis快速整合搭建一個簡單的項目,並從數據庫中成功返回數據到前端展示!

 


免責聲明!

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



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