JavaEE Spring MyBatis如何一步一步实现数据库查询功能

一、概述
JavaEE 是一个企业级应用开发框架,Spring 是 JavaEE 中最常用的框架之一,MyBatis 是一款优秀的 ORM 框架,通过使用这三个框架,可以轻松实现一个 JavaEE 企业级应用。本文将以一个简单的文章阅读网站为例,介绍 JavaEE Spring MyBatis 如何一步一步实现数据库查询功能。

二、环境准备
1. JDK 1.8 及以上版本
2. MySQL 数据库(或其他数据库)
3. Intellij IDEA(或其他 Java IDE)
4. Maven

三、创建数据库
在 MySQL 数据库中执行以下 SQL 语句创建需要的表:

CREATE TABLE `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL,
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

四、使用 Maven 创建项目
在 Intellij IDEA 中使用 Maven 创建一个新项目,将以下依赖项添加到 pom.xml 文件中:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.9</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>
</dependencies>

并创建以下文件夹:

- src/main/java/com/example/demo/DemoApplication.java(主类)
- src/main/java/com/example/demo/controller/ArticleController.java(控制器)
- src/main/java/com/example/demo/model/Article.java(数据模型)
- src/main/java/com/example/demo/mapper/ArticleMapper.java(MyBatis 数据库访问类)
- src/main/resources/application.properties(配置文件)
- src/main/resources/mapper/ArticleMapper.xml(MyBatis SQL 映射文件)

五、实现数据库访问层
1. ArticleMapper.java

创建 ArticleMapper.java 文件,用于在 Java 中访问数据库:

@Mapper
public interface ArticleMapper {
    @Select("SELECT * FROM `article`")
    List<Article> findAll();
}
  1. ArticleMapper.xml

创建 ArticleMapper.xml 文件,用于将 SQL 映射到 ArticleMapper.java 接口中:

<mapper namespace="com.example.demo.mapper.ArticleMapper">
    <select id="findAll" resultType="com.example.demo.model.Article">
        SELECT * FROM `article`
    </select>
</mapper>

六、实现业务逻辑层
1. ArticleService.java

创建 ArticleService.java 文件,定义数据访问的方法:

@Service
public class ArticleService {
    private final ArticleMapper articleMapper;
    public ArticleService(ArticleMapper articleMapper) {
        this.articleMapper = articleMapper;
    }

    public List<Article> findAll() {
        return articleMapper.findAll();
    }
}

七、实现控制层
1. ArticleController.java

创建 ArticleController.java 文件,用于处理前端用户请求:

@Controller
public class ArticleController {
    private final ArticleService articleService;
    public ArticleController(ArticleService articleService) {
        this.articleService = articleService;
    }

    @GetMapping("/article")
    public String index(Model model) {
        List<Article> articles = articleService.findAll();
        model.addAttribute("articles", articles);
        return "article/index";
    }
}
  1. 配置视图

在 resources 文件夹下创建 templates 文件夹,创建 article 文件夹,并添加 index.html 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文章列表</title>
</head>
<body>
    <h1>文章列表</h1>
    <ul>
        <li th:each="article : ${articles}" th:text="${article.title}"></li>
    </ul>
</body>
</html>

八、配置数据库连接
在 application.properties 文件中添加以下内容:

# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

# MyBatis 配置
mybatis.type-aliases-package=com.example.demo.model
mybatis.mapper-locations=classpath:mapper/*.xml

九、运行程序
运行 DemoApplication.java 后,在浏览器中访问 http://localhost:8080/article 即可看到文章列表。

十、示例说明
本文实现的功能是查询文章列表。其中,数据库表 article 包含字段 id、title 和 content。通过创建 ArticleMapper.java 和 ArticleMapper.xml,实现了数据访问层。通过创建 ArticleService.java,调用数据访问层方法,并在控制层中返回视图,实现了业务逻辑层和表示层。最后,通过在 application.properties 中配置数据库连接,实现了数据库连接和 MyBatis 配置。

以下是部分示例代码:

@Mapper
public interface ArticleMapper {
    @Select("SELECT * FROM `article`")
    List<Article> findAll();
}

@Service
public class ArticleService {
    private final ArticleMapper articleMapper;
    public ArticleService(ArticleMapper articleMapper) {
        this.articleMapper = articleMapper;
    }

    public List<Article> findAll() {
        return articleMapper.findAll();
    }
}

@Controller
public class ArticleController {
    private final ArticleService articleService;
    public ArticleController(ArticleService articleService) {
        this.articleService = articleService;
    }

    @GetMapping("/article")
    public String index(Model model) {
        List<Article> articles = articleService.findAll();
        model.addAttribute("articles", articles);
        return "article/index";
    }
}
阅读剩余 75%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaEE Spring MyBatis如何一步一步实现数据库查询功能 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • Java多线程之同步锁-lock详解

    Java多线程之同步锁-lock详解 前言 在多线程编程中,同步是一项非常重要的概念,同步控制的目的是为了保证线程安全,避免由于多线程操作导致的数据混乱等问题。在Java中,同步机制有多种实现方式,其中Lock是比较常用的一种。 Lock与synchronized的对比 在Java早期版本中,synchronized是主流的同步控制方式,但是synchron…

    Java 2023年5月19日
    00
  • Java并发编程之工具类Semaphore的使用

    接下来我将详细讲解Java并发编程中Semaphore工具类的使用。 Semaphore介绍 Semaphore是一种计数信号量,它可以用来控制同时访问某个特定资源的线程数量。 对于使用Semaphore的程序来说,如果控制的资源达到上限,请求资源的线程就会被阻塞。 Semaphore可以看做是一种更高级别的锁,它能够限制同时访问共享资源的线程数量。相比于锁…

    Java 2023年5月26日
    00
  • springboot使用校验框架validation校验的示例

    下面我将为您详细讲解 “springboot使用校验框架validation校验的示例”。 1. 简介 Spring Boot是一个非常受欢迎的Java开发框架,同样,校验数据是每个Web应用的基本要求之一。在Spring Boot中,可以使用Validation框架轻松地完成数据校验。 Validation是Java Bean Validation API…

    Java 2023年5月19日
    00
  • SpringBoot实现jsonp跨域通信的方法示例

    下面是“Spring Boot实现jsonp跨域通信的方法示例”的完整攻略: 什么是 JSONP JSONP(JSON with Padding)是一种跨域数据传输方法,它利用script标签的跨域能力,在服务端动态生成一个js文件然后返回给客户端,客户端通过调用该js文件进行数据处理。 实现 JSONP 的步骤 1. 创建 Spring Boot 项目 使…

    Java 2023年5月26日
    00
  • Java NIO异步文件通道原理及用法解析

    Java NIO异步文件通道原理及用法解析 什么是Java NIO Java NIO(New IO)是一个针对Java 1.4及以上版本的IO API,用于提供替代传统Java IO API中比较耗时的阻塞式IO操作。与旧的IO API相比,它使Java的IO操作变得更快、更可扩展和更多功能。 Java NIO核心组件包括:选择器、ByteBuffer、Ch…

    Java 2023年5月20日
    00
  • 详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】

    详解js的延迟对象、跨域、模板引擎、弹出层、AJAX 本文主要介绍 JavaScript 中五个常用的技术点:延迟对象、跨域、模板引擎、弹出层和 AJAX。我们将使用示例来演示这五个技术点的应用。 延迟对象 延迟对象(Deferred Object)是 jQuery 中异步编程的核心概念之一。在 JavaScript 中,通常采用回调函数进行异步编程。而延迟…

    Java 2023年5月19日
    00
  • 解析Java的Hibernate框架中的持久化类和映射文件

    解析Java的Hibernate框架中的持久化类和映射文件 Hibernate是一个Java平台的ORM框架,可以方便地进行对象和关系的映射,从而实现持久化操作。持久化类和映射文件是Hibernate框架中实现持久化操作的核心要素。本文将详细讲解解析Java的Hibernate框架中的持久化类和映射文件的完整攻略。 持久化类 持久化类是Hibernate框架…

    Java 2023年5月31日
    00
  • Sprint Boot @PatchMapping使用方法详解

    Spring Boot的@Validated的作用与使用方法 在Spring Boot中,@Validated注解用于验证请求参数的有效性。它可以用于验证请求参数的格式、范围、长度等,以确保请求参数的有效性。在本文中,我们将详细介绍@Validated注解的作用和使用方法,并提供两个示例。 @Validated注解的作用 @Validated注解用于验证请求…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部