SpringBoot+MyBatis 框架搭建

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82620065 ...
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82620065

SpringBoot+MyBatis 框架搭建

基础框架使用 SpringBoot
持久层使用 MyBatis
数据源使用 Druid
数据库使用 MySQL

更多精彩

创建 Java Web 项目,并配置 POM

  1. 该 POM 只包含最基础的配置,没有任何多余 JAR 包
<?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.asing1elife.newso</groupId>
  <artifactId>asl-newso</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!-- SpringBoot 基础依赖 -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
  </parent>

  <!-- 指定编码格式和 JDK 版本 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <!-- SpringBoot 相关依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <version>2.0.2.RELEASE</version>
    </dependency>

    <!-- MyBatis 相关依赖 -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.2</version>
    </dependency>

    <!-- MySQL 相关依赖 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>6.0.6</version>
    </dependency>

    <!-- Druid 相关依赖 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.9</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.9</version>
    </dependency>

  </dependencies>

</project>

指定端口号

  1. /resources 根目录创建 application.yml 文件并添加如下内容
  2. 表示端口号为 8080
  3. 以及项目请求根路径为 /newso
server:
  port: 8080
  servlet:
    context-path: /newso

指定数据源

  1. application.yml 中添加如下内容为数据源连接信息
  2. 数据源使用过的是阿里的 Druid
spring:
  datasource:
    name: newso_dev
    url: jdbc:mysql://127.0.0.1:3306/newso_dev?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      filters: stat
      max-active: 20
      initial-size: 1
      max-wait: 60000
      min-idle: 1
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: select 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-open-prepared-statements: 20

指定 MyBatis 配置

  1. 同样可在 application.yml 中指定 MyBatis 的配置信息
  2. mapper-locations 是指定 mapper 文件所在位置
  3. type-aliases-package 是指定对应实体类所在位置
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.asing1elife.newso.dto

作为前后分离项目必不可少的结果集对象

  1. 前后分离项目都是采用前端发起请求,后端返回结果
  2. 为了保证后端返回结果的统一性,所以需要如下的结果集对象
  3. 只有这样前端在处理后端返回结果时,才能有规范的操作
public class ResponseData {

    private static final String SUCCESS_CODE = "0";
    private static final String ERROR_CODE = "-1";

    private String status = SUCCESS_CODE;

    private Object data;

    ...

    public boolean isSuccess() {
        return this.status.equalsIgnoreCase(SUCCESS_CODE);
    }

    public void setError(Object data) {
        this.status = ERROR_CODE;
        this.data = data;
    }
}

控制层基础控制类

  1. 基础控制类的作用在于可以在调用逻辑层代码时有一个统一的预处理操作或者后置操作
public class SimpleActionHandler {

    private Logger log = LoggerFactory.getLogger(this.getClass());

    // 当前请求
    private String action;

    public SimpleActionHandler(HttpServletRequest request) {
        // 记录当前请求
        this.action = request.getRequestURI();
    }

    public void doAction(ResponseData responseData) {
        throw new RuntimeException("This method must be overide");
    }

    public ResponseData handle(HttpServletRequest... requests) {
        ResponseData responseData = new ResponseData();

        try {
            doAction(responseData);
        } catch (Exception e) {
            log.info(this.action, e);
            responseData.setError(e.getMessage());
        }

        return responseData;
    }
}

创建控制层接收请求信息

@RestController
@RequestMapping("/api/homes")
public class HomeController extends AbstractBaseController {

    @GetMapping("")
    public ResponseData main() {
        return new SimpleActionHandler(request) {
            @Override
            public void doAction(ResponseData responseData) {
                System.out.println("welcome");
            }
        }.handle();
    }

}

MyBatis 通过自定义接口规范 DAO 层

  1. 通过 @Mapper 注解可以确保容器只扫描被注解的 DAO
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Component
@Mapper
public @interface MyBatisRepository {
}

创建 DAO 接口

  1. 在 DAO 接口使用自定义的注解即可保证该接口被容器扫描到
@MyBatisRepository
public interface NewsDaoMyBatis {
    List<NewsDTO> getNewss();
}

创建 Mapper 文件

  1. Mapper 文件的 DTD 都是统一格式的,按照如下规范即可
<?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.asing1elife.newso.module.news.dao.NewsDaoMyBatis">

  <select id="getNewss" resultType="NewsDTO">
    SELECT
      ne.id,
      ne.title,
      ne.brief,
      ne.author_id AS 'author.id',
      ne.createTime
    FROM
      ns_news ne
  </select>

</mapper>
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
1月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
1月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
121 8
|
2月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
253 2
SQL XML Java
89 0
|
2月前
|
监控 Kubernetes Cloud Native
Spring Batch 批处理框架技术详解与实践指南
本文档全面介绍 Spring Batch 批处理框架的核心架构、关键组件和实际应用场景。作为 Spring 生态系统中专门处理大规模数据批处理的框架,Spring Batch 为企业级批处理作业提供了可靠的解决方案。本文将深入探讨其作业流程、组件模型、错误处理机制、性能优化策略以及与现代云原生环境的集成方式,帮助开发者构建高效、稳定的批处理系统。
366 1
|
2月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
193 12
|
3月前
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
3月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
702 0
|
3月前
|
SQL XML Java
MyBatis框架如何处理字符串相等的判断条件。
总的来说,MyBatis框架提供了灵活而强大的机制来处理SQL语句中的字符串相等判断条件。无论是简单的等值判断,还是复杂的条件逻辑,MyBatis都能通过其标签和属性来实现,使得动态SQL的编写既安全又高效。
271 0
|
4月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
537 1

热门文章

最新文章

下一篇
oss云网关配置