首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Boot 整合 MyBatis 構建 SpringMVC Web 專案完整實戰

     編輯:Java 相關知識

為什麼選擇 Spring Boot + MyBatis?

傳統 SpringMVC 專案需要大量 XML 配置、手動搭建 Tomcat/Jetty,前後端協作時環境一致性難以保證。Spring Boot 以「約定優於配置」實現免 XML、內嵌容器、一鍵啟動;MyBatis 則提供靈活的 SQL 定制化與輕量級 ORM,避免 Hibernate 過度規範資料庫結構的侷限。兩者結合,打造出開箱即用、分層清晰的現代 Web 專案骨架。

專案分層架構

  • Controller 層:處理 HTTP 請求,支援視圖模板、JSON、RESTful 三種回應風格
  • Service 層:業務邏輯封裝,事務管理
  • Mapper 層:MyBatis 介面定義,SQL 映射 XML
  • Model 層:POJO 實體類別

核心配置與程式碼

1. Maven 依賴

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</groupId>
    <version>1.2.5.RELEASE</version>
</parent>

<dependencies>
    <!-- Web + 內嵌 Tomcat -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
    <!-- Thymeleaf 模板引擎 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
    <!-- JDBC + 連線池 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>
    <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jdbc</artifactId></dependency>
    <!-- MyBatis 整合 -->
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency>
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version></dependency>
    <!-- MySQL 驅動 -->
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
    <!-- JSON / Swagger -->
    <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.43</version></dependency>
    <dependency><groupId>com.mangofactory</groupId><artifactId>swagger-springmvc</artifactId><version>0.9.5</version></dependency>
</dependencies>

2. 啟動類與資料源配置

@SpringBootApplication
@MapperScan("cn.no7player.mapper")
public class Application {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return new org.apache.tomcat.jdbc.pool.DataSource();
    }

    @Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource());
        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources("classpath:/mybatis/*.xml"));
        return bean.getObject();
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3. application.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=gbk
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

4. Controller 三種風格範例

// 1. 視圖模板
@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String greeting(@RequestParam(defaultValue="World") String name, Model model) {
        model.addAttribute("name", name);
        return "hello"; // 對應 templates/hello.html
    }
}

// 2. JSON 回應
@Controller
public class UserController {
    @Autowired UserService userService;
    @RequestMapping("/getUserInfo")
    @ResponseBody
    public User getUserInfo() { return userService.getUserInfo(); }
}

// 3. RESTful + Swagger
@RestController
@RequestMapping("/users")
public class SwaggerController {
    @ApiOperation("獲取所有用戶")
    @GetMapping
    public List<User> getUsers() { ... }
    
    @ApiOperation("根據名稱獲取用戶")
    @GetMapping("/{name}")
    public User getUserById(@PathVariable String name) { ... }
}

5. MyBatis Mapper 定義

<!-- UserMapper.xml -->
<mapper namespace="cn.no7player.mapper.UserMapper">
    <select id="findUserInfo" resultType="cn.no7player.model.User">
        select name, age, password from user;
    </select>
</mapper>

public interface UserMapper {
    User findUserInfo();
}

專案結構與啟動驗證

  1. 執行 `Application.main()` 啟動內嵌 Tomcat
  2. 控制台輸出 SpringBoot Start Success
  3. 驗證三種介面:
    視圖:https://localhost:8080/hello?name=7player
    JSON:https://localhost:8080/getUserInfo
    Swagger UI:https://localhost:8080/swagger/index.html

關鍵優勢總結

  • ✅ 零 XML 配置,純 Java Config + 註解驅動
  • ✅ 內嵌容器,打包為 JAR 即可獨立部署
  • ✅ `@ConfigurationProperties` 自動綁定屬性檔,型別安全
  • ✅ MyBatis XML 與註解雙模式共存,SQL 完全可控
  • ✅ 整合 Swagger 自動生成 API 文件與測試介面

這個專案骨架適用於中小型專案快速起步,亦可作為微服務單體模組的基礎模板。實際生產環境建議補充:配置檔加密、多環境 Profile、健康檢查端點、分散式追蹤等企業級能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved