MyBatis-Flex的快速入门和使用 MyBatis 原生功能 与xml文件的配置

框架介绍

MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。

MyBatis-Flex 是什么 - MyBatis-Flex 官方网站(帮助文档)

一.基础配置

1.引入相关依赖

<!-- Spring Boot Web Starter, 用于构建Web应用程序,包括RESTful服务 -->  
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-web</artifactId>  
</dependency>  
  
<!-- MyBatis Flex Spring Boot Starter, 提供了MyBatis的集成和灵活配置 -->  
<dependency>  
    <groupId>com.mybatis-flex</groupId>  
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>  
    <version>1.8.1</version>  
</dependency>  
  
<!-- MyBatis Flex Annotation Processor, 用于在编译时处理注解,生成代码等 -->  
<dependency>  
    <groupId>com.mybatis-flex</groupId>  
    <artifactId>mybatis-flex-processor</artifactId>  
    <version>1.8.1</version>  
    <scope>provided</scope>  
</dependency>  
  
<!-- Druid Spring Boot Starter, 用于数据库连接池管理 -->  
<dependency>  
    <groupId>com.alibaba</groupId>  
    <artifactId>druid-spring-boot-starter</artifactId>  
    <version>1.2.6</version>  
</dependency>  
  
<!-- MySQL JDBC 驱动,用于连接MySQL数据库 -->  
<dependency>  
    <groupId>com.mysql</groupId>  
    <artifactId>mysql-connector-j</artifactId>  
    <scope>runtime</scope>  
</dependency>  
  
<!-- Spring Boot Test Starter, 用于测试Spring Boot应用程序 -->  
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-test</artifactId>  
    <scope>test</scope>  
</dependency>  
  
<!-- Lombok, 用于简化Java代码,自动生成getter/setter等 -->  
<dependency>  
    <groupId>org.projectlombok</groupId>  
    <artifactId>lombok</artifactId>  
</dependency>

2.创建数据库表

直接参照官网示例,SQL如下:

CREATE TABLE IF NOT EXISTS `tb_account`
(
    `id`        INTEGER PRIMARY KEY auto_increment,
    `user_name` VARCHAR(100),
    `age`       INTEGER,
    `birthday`  DATETIME
);

INSERT INTO tb_account(id, user_name, age, birthday)
VALUES (1, '张三', 18, '2020-01-11'),
       (2, '李四', 19, '2021-03-21');
3.在进行操作时我们需要这个两个后面是导入的方法

4.实体类

这里使用了 Lombok 来简化代码 并且创建对应的数据库类的类

实体 Account类代码
package com.example.db.mybatisflex.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 账户 实体类。
 *
 * @author 宋冠巡
 * @since 2023-10-29
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(value = "tb_account")
public class Account implements Serializable {

    @Id(keyType = KeyType.Auto)
    private Integer id;

    private String userName;

    private Integer age;

    private LocalDateTime birthday;

}

Accountmapper的类
package com.yxj.javaee.mapper;

import com.mybatisflex.core.BaseMapper;
import com.yxj.javaee.domain.po.Account;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AccountMapper extends BaseMapper<Account> {


//    @Select("select * from tb_account where id=#{id}")
    Account selectTest(@Param("id") Long id);


    List<Account>selectByName();


    long selectByName_COUNT();

}

3.SpringBoot 原生配置

application.yml 中添加数据源配置。

并且yml文件中配置指定 MyBatis 映射文件(即 Mapper XML 文件)的位置。这些文件包含了 SQL 语句、映射规则等,是 MyBatis 框架与数据库交互的重要部分。
# 应用服务 WEB 访问端口
server:
  port: 8080

spring:
  datasource:
    username: roo123t1111
    password: 112311111
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/work?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

mybatis-flex:
  mapper-locations:
    - classpath*:/mapper/*.xml

基本配置已经完成可以 

二. 使用 MyBatis

1.原生注解 

  1. MyBatis 提供了 @Insert 、@Delete 、@Update 、@Select 4 个注解,用于对 Mapper 的方法进行配置,用于原生编写原生 SQL 进行增删改查, 在 MyBatis-Flex 我们一样可以使用这些注解。例如:
@Mapper
public interface AccountMapper extends BaseMapper<Account> {


    @Select("select * from account where id=#{id}")
    Account selectTest(@Param("id") Long id);

在测试类中

在测试类中运行运行结果

三.使用 xml 的方式进行查询

在开始使用 xml 之前,我们需要添加如下配置,告知 mybatis 的 xml 存放路径。

mybatis-flex:
  mapper-locations:
    - classpath*:/mapper/*.xml
将@select注解去掉并且 resources下创建mapper 后创建 对应的mapper.xml文件

可以去测试类运行了

使用 xml 的方式分页

XML 分页是 MyBatis-Flex 在 v1.5.5 开始提供的一个 XML 分页解决方案,方便用户在使用 XML 时,对数据进行分页查询。

示例代码如下:

 @Test
    void pageTest() {
        QueryWrapper qw = QueryWrapper.create()
                .where(Account::getAge).ge(18)
                .and(Account::getId).ge(0);

        Page<Account> accountPage =  accountMapper
                .xmlPaginate("selectByName", Page.of(1, 10), qw);

        System.out.println( accountPage);
    }

将他放入测试类中进行测试

参数 selectByName 指的是在 XML 里定义的 select 节点的 id 的名称。selectByName 也可以全写为: com.mybatisflex.test.mapper.AccountMapper.selectByName

此时,需要也在 XML 里定义名称为 selectByName_COUNT 的 select 节点,用于查询数据总量。

XML 代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mybatisflex.test.mapper.AccountMapper">

    <!-- selectByName -->
    <select id="selectByName" resultType="com.mybatisflex.test.model.Account">
        select * from `tb_account` ${qwSql} limit ${pageOffset}, ${pageSize}
    </select>

    <select id="selectByName_COUNT" resultType="long">
        select count(*) from `tb_account` ${qwSql}
    </select>

</mapper>

10条分页,运行后结果得到前10条数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值