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日志并进行多维度分析。
目录
相关文章
|
1天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
10 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
2天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
15 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
2天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的美容预约管理系统
基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
13 3
基于Java+Springboot+Vue开发的美容预约管理系统
|
3天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的房产销售管理系统
基于Java+Springboot+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
22 3
基于Java+Springboot+Vue开发的房产销售管理系统
|
2天前
|
存储 网络协议 Java
Java NIO 开发
本文介绍了Java NIO(New IO)及其主要组件,包括Channel、Buffer和Selector,并对比了NIO与传统IO的优势。文章详细讲解了FileChannel、SocketChannel、ServerSocketChannel、DatagramChannel及Pipe.SinkChannel和Pipe.SourceChannel等Channel实现类,并提供了示例代码。通过这些示例,读者可以了解如何使用不同类型的通道进行数据读写操作。
Java NIO 开发
|
3天前
|
消息中间件 缓存 Java
RocketMQ的JAVA落地实战
RocketMQ作为一款高性能、高可靠、高实时、分布式特点的消息中间件,其核心作用主要体现在异步处理、削峰填谷以及系统解耦三个方面。
19 0
|
14天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1天前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
29天前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
82 1
|
1月前
|
Web App开发 前端开发 关系型数据库
基于SpringBoot+Vue+Redis+Mybatis的商城购物系统 【系统实现+系统源码+答辩PPT】
这篇文章介绍了一个基于SpringBoot+Vue+Redis+Mybatis技术栈开发的商城购物系统,包括系统功能、页面展示、前后端项目结构和核心代码,以及如何获取系统源码和答辩PPT的方法。