Java Web实战 | 开发一个MyBatis

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文介绍如何开发一个MyBatis基础应用。可遵照以下步骤进行。

640.jpg

01、准备数据表

在MySQL中创建数据库mybatis,并在mybatis数据库中创建表tb_team。语句如下:

640.png

02、创建项目并引入相关依赖

创建一个Maven项目,并引入4个相关jar包,分别是MyBatis 3.5.9核心包,用于单元测试的JUnit 4.10包,用于MyBatis输出日志信息的SLF4J 和Logback 1.2.10包,MySQL 8.0.28 Java驱动程序包。修改pom.xml文件,加入如下依赖:

57d47c47ad937fc29145dcaf48589a00.png


34efa53fa451244ac42152a6547637b0.png

03、创建日志配置文件

为方便程序调试,开发者经常需要在控制台输出SQL语句。这就需要配置MyBatis的输出日志。本书采用SLF4J和Logback构建日志系统。可以在src/main/resources目录下创建一个logback.xml的文件,作为Logback的配置文件,如文件1所示。
【文件1】logback.xml

42dca771ec7e2aefbbcb69050b7d001b.png


在文件1中的第10行设置了输出日志的包为com.example.mybatis.mapper。即执行该包中的代码时,MyBatis会在控制台输出日志信息。根据调试需要,可以扩大或缩小(可以指定日志输入范围为某个包中的某个类)输出日志的范围。

04、创建数据库连接配置文件

数据库连接的参数可以用properties文件实现动态配置。即由核心配置文件读取properties文件中的配置参数值,进而完成数据库连接设置。在src/main/resources目录下创建db.properties文件,内容如文件2所示。
【文件2】db.properties

640.png

05、创建MyBatis配置文件

MyBatis的配置文件主要用于项目的环境配置,如数据库连接的相关配置等。配置文件可任意命名,本书将其命名为mybatis-config.xml。在src/main/resources下创建配置文件,内容如文件3所示。
【文件3】mybatis-config.xml

40f9ddd8281701662a2da4844aa51628.png


其中,第2~4行为配置文件的约束信息,第6行用于加载数据库连接配置文件,第9行用于配置事务管理器,第10行使用JDBC DataSource接口构建数据库连接池,第11~14行用于配置数据库连接池的核心参数。

06、创建持久化类

持久化类用于封装应用程序要操作的数据。注意持久化类的属性类型应与数据库表中对应的字段类型相匹配。持久化类的属性名字可以与数据库表中字段的名字一致(非必须)。在src/main/java目录下创建com.example.mybatis.entity包,并在包中创建Team类,代码如文件4所示。

【文件4】Team.java

640.png

07、创建映射文件

在src/main/java目录下创建一个包com.example.mybatis.mapper,并创建一个名为TeamMapper.xml的映射文件。该文件主要用于配置SQL语句和Java对象之间的映射,使得被SQL语句查询出来的结果能够被映射为Java对象。一个项目可以有多个映射文件,每个实体类都可以有与其对应的映射文件。映射文件通常使用“持久化类的名字+Mapper”的方式命名。TeamMapper.xml的内容如文件5所示。

【文件5】TeamMapper.xml

640.png


其中,第2~4行是映射文件的约束信息,第5行是根元素的声明,属性namespace用于标识映射文件。一般来讲,要定义一个DAO接口,并用namespace来指定这个DAO接口的全限定名。本例中没有定义相关接口,此处的namespace属性只是用包名来填充。第6~9行的 元素用于编写SQL查询语句。其中 的id属性是该SQL语句的唯一标识,Java代码通过id值找到对应的SQL语句。resultType属性声明SQL查询语句的返回结果会被映射为Team类型。第8行为要执行的SQL语句,从提升程序性能角度考虑,不建议写 “select from…” 这种结构,而是将“”替换为要查找的字段列表。

08、修改配置文件

映射文件需要与配置文件关联,这样才可以在读取配置文件时加载映射文件。修改文件3,在第17行和第18行之间加入对映射文件的引用,代码如下:

640.png

09、编写测试类

最后,在src/test/java目录下创建com.example.demo.test包,并在该包中创建一个测试类TeamDemoTest,测试代码如文件6所示。

【文件6】TeamDemoTest.java

9df5f37fba0a86060db564a6d0caf88b.png


5c90ab638f7b581d313ce115b1165ec7.png


eda06002f16c556ad09335c49a6d0b7a.png


其中,第29~30行找到映射文件的元素的子元素,并执行中的SQL语句。具体过程为:首先通过元素的namespace属性找到对应的,在通过的子元素的id属性找到对应的子元素,并执行其中的SQL语句。由于要执行的是查询语句,并且该查询语句可能返回一组数据,因此调用的是SqlSession接口的selectList()方法。执行此测试代码,会在控制台输出当前tb_team表中的全部记录,如图3所示。

640.png


■ 图3 输出当前tb_team表中的全部记录

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7天前
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
33 13
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
56 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
14天前
|
Java
Java基础却常被忽略:全面讲解this的实战技巧!
本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容: 1.什么是this 2.this的场景化使用案例 3.关于this的误区 4.总结与练习
|
30天前
|
Java 程序员
Java基础却常被忽略:全面讲解this的实战技巧!
小米,29岁程序员,分享Java中`this`关键字的用法。`this`代表当前对象引用,用于区分成员变量与局部变量、构造方法间调用、支持链式调用及作为参数传递。文章还探讨了`this`在静态方法和匿名内部类中的使用误区,并提供了练习题。
32 1
|
2月前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
67 6
|
2月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
2月前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
62 6
|
2月前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
73 0
|
8天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。