在开始之前,我们假定您已经:
- 熟悉 Java 环境配置及其开发
- 熟悉 关系型 数据库,比如 MySQL
- 熟悉 Spring Boot 及相关框架
- 熟悉 Java 构建工具,比如 Maven
今天我们要了解和学习的是MyBatis 原生功能,在MyBatis中 提供了 @Insert
、@Delete
、@Update
、@Select
4 个注解,用于对 Mapper 的方法进行配置,用于原生编写原生 SQL 进行增删改查, 在 MyBatis-Flex 我们一样可以使用这些注解。那么我们先来实现原生功能,以通过查询ID或登录来实现。
原生功能
查询ID
首先第 1 步:创建数据库表
DROP TABLE IF EXISTS `school`;
CREATE TABLE `school` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` char(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`password` char(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
并在数据库中插入适当的数据,比如:
第 2 步:创建 Spring Boot 项目,并配置 Maven 依赖包和xml文件等
pom.xml文件配置如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.Mybatis-flex</groupId>
<artifactId>Mybatis-flex</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Mybatis-flex</name>
<description>Mybatis-flex</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot-starter</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-processor</artifactId>
<version>1.8.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>com.mybatisflex.MybatisFlexApplication</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
第 3步:创建一个实体类School,如下图所示
第 4步:创建一个mapper类MyAccountMapper,并创建selectById的方法,如下图所示:
第 5步:编写测试类,通过调用编写的selectById方法查询数据库中的数据
登录
方法同上,在mapper文件总添加如下语句:
其次,编写测试类方法输出结果
xml 的方式
首先,在开始使用 xml 之前,我们需要添加如下配置,告知 mybatis 的 xml 存放路径。
其次,配置完成后,我们就可以编写自己的 xml 和 mapper 代码了,如下所示:
public interface MyAccountMapper extends BaseMapper<Account> {
Account selectByName(@Param("name") String name);
}
在resource文件下创建一个mapper文件夹,并创建一个MyAccountMapper同名的Mapper文件并添加如下代码:
最后在测试类中编写测试方法调用:
XML 分页
XML 分页是 MyBatis-Flex 在 v1.5.5 开始提供的一个 XML 分页解决方案,方便用户在使用 XML 时,对数据进行分页查询。
首先在xml分式的基础上编写MyAccountMapper.xml文件,代码如下:
<!-- selectByName -->
<select id="selectByName" resultType="com.mybatisflex.enity.School">
select * from `school` ${qwSql} limit ${pageOffset}, ${pageSize}
</select>
<!--分页查询-->
<select id="selectByName_COUNT" resultType="long">
select count(*) from `school` ${qwSql}
</select>
其执行的 SQL 如下:
-- 查询数据量
select count(*) from `tb_account` WHERE `age` = 18 AND `id` >= 0
-- 查询数据
select * from `tb_account` WHERE `age` = 18 AND `id` >= 0 limit 0, 10
其次,编写测试类方法:
//分页查询
void selectByPage(){
QueryWrapper qw = QueryWrapper.create()
.where(School::getAge).eq(18)
.and(School::getId).ge(0);
Page<School> accountPage = myAccountMapper
.xmlPaginate("selectByName", Page.of(1, 10), qw);
System.out.println(accountPage);
}
最后,其结果如下图所示:
总结
本次学习主要是对MyBatis的原生功能和xml的分页的系统学习,在这个项目中,我深刻体会到团队协作和沟通的重要性,只有充分交流才能提高工作效率。通过实践,我也增强了对系统设计与实现流程的理解,为今后的开发打下了坚实基础。
标签:xml,flex,spring,boot,IDea,MyBatis,org From: https://blog.csdn.net/weixin_56894944/article/details/142617685