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";
    }
}

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

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

相关文章

  • Java序列化JSON丢失精度问题的解决方法(修复Long类型太长)

    Java序列化JSON丢失精度问题的解决方法(修复Long类型太长) 问题描述 在使用Java自带的GSON等JSON序列化工具时,会出现Long类型数据过长而丢失精度的问题,导致数据不准确或错误。例如,当Long类型数字过大时,就无法正确表示,例如Long.MAX_VALUE加1即可出现此问题。这种情况会导致传输的数据与实际值出现差异,影响数据的准确性。 …

    Java 2023年5月26日
    00
  • springboot全局日期格式化的两种方式

    下面就为您详细讲解“springboot全局日期格式化的两种方式”的攻略: 方式一:使用配置类 首先在项目中新建一个配置类,例如MyConfig类。 在MyConfig类中,使用@Configuration注解来标识这是一个配置类。 在MyConfig类中,使用@Bean注解来将日期格式化器加入到Spring容器中。 在日期格式化器的Formatter#pa…

    Java 2023年6月1日
    00
  • 手写简版kedis分布式key及value服务的实现及配置

    下面是实现“手写简版kedis分布式key及value服务的实现及配置”的完整攻略: 1. 简介 kedis是一个分布式缓存系统,类似于redis和memcached,但使用协议更为简单和高效。本攻略将介绍如何手写一个简版的kedis,实现分布式key及value服务的配置。 2. 实现 2.1. 算法选择 kedis的实现依赖于哈希算法,用于计算key的h…

    Java 2023年5月20日
    00
  • Servlet简单实现登录功能

    以下是Servlet简单实现登录功能的攻略: 1. 创建Servlet 首先需要在IDE中创建一个Servlet,并在web.xml中配置Servlet的映射。代码如下: @WebServlet("/login") public class LoginServlet extends HttpServlet { } 2. 搭建登录页面 接下…

    Java 2023年5月26日
    00
  • Java无法输出中文问题及解决

    Java无法输出中文问题是因为在输出时使用的是字节流,而中文字符在UTF-8编码下占用多个字节,单独输出一个字节可能无法正确显示中文字符。下面是Java无法输出中文问题的解决步骤。 方法一:使用字符流 使用BufferedWriter类在控制台(System.out)输出中文字符。 import java.io.*; public class OutputC…

    Java 2023年5月20日
    00
  • java微信支付接入流程详解

    Java微信支付接入流程详解 本文将详细介绍Java微信支付接入的流程,帮助开发者在自己的网站中使用微信支付。 1. 注册微信支付商户号 在使用微信支付之前,需要先注册一个微信支付商户号。具体步骤如下: 在微信商户平台(https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F)注册一…

    Java 2023年5月26日
    00
  • SpringSecurity自定义AuthenticationProvider无法@Autowire的解决

    如果在使用Spring Security时,遇到需要自定义 AuthenticationProvider 的情况,同时自定义的 AuthenticationProvider 中需要使用 @Autowired注入其他的bean,却发现无法注入的情况,此时可以按照以下步骤进行解决。 问题背景 在使用Spring Security时,如果需要自定义 Authent…

    Java 2023年5月20日
    00
  • 详解Java如何实现加密或者解密PDF文档

    让我来详细讲解Java如何实现加密或者解密PDF文档的完整攻略。 一、PDF加密或解密的基本原理 在讲解如何实现PDF加密或解密之前,先来了解一下PDF加密或解密的基本原理。 PDF加密是通过对PDF文档进行加密处理,在文档中添加一些限制来保护PDF文档的安全性。PDF加密主要包括以下方式: 对PDF文档全文进行加密,需要输入密码才能查看; 对PDF文档的部…

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