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日志并进行多维度分析。
目录
相关文章
|
4天前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
33 12
|
27天前
|
前端开发 Java 程序员
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
42 6
|
30天前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
30 4
|
30天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
41 5
|
30天前
|
SQL Java API
|
6月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
141 0
|
6月前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
97 1
|
8月前
|
安全 Java 数据库连接
Java Web应用
Java Web应用
33 0
|
9月前
|
前端开发 JavaScript Java
Java语言在Web前端开发中的技术应用
Java语言在Web前端开发中的技术应用
154 0
|
9月前
|
设计模式 存储 前端开发
Java的mvc设计模式在web开发中应用
Java的mvc设计模式在web开发中应用
161 0

热门文章

最新文章