首页 > 其他分享 >使用 MyBatis 原生功能

使用 MyBatis 原生功能

时间:2024-09-28 20:21:13浏览次数:9  
标签:原生 功能 pageSize int id offset MyBatis tb public

我们使用 MyBatis-Flex 作为 MyBatis 的增强框架进行代码开发,并不会影响原有的 MyBatis 的任何功能。

一.使用 @Select 等 MyBatis 原生注解

1.创建数据库表并插入数据
CREATE TABLE IF NOT EXISTS tb_userinfo (
    id INT AUTO_INCREMENT COMMENT '用户编号' PRIMARY KEY,
    user_name VARCHAR(50) NOT NULL COMMENT '用户姓名',
    password VARCHAR(255) NOT NULL COMMENT '密码'
) COMMENT '用户信息表';

INSERT INTO tb_userinfo (user_name, password) VALUES 
('Tom', 'gafda11'),  
('Acc', 'password2222'),
('Shy', 'myqq666'),
('Bad', 'password1234'),
('BOL', 'theshy798'),
('Fake', 'tjc@ww0dd'),
('Mark', 'wqw@qqcc1'),
('Hali', 'aq!www22');

SELECT * FROM tb_userinfo;
2.在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
@Data
@Table("tb_userinfo") 
public class Userinfo {
    @Id(keyType = KeyType.Auto) 
    private int id; 
    private String user_name; 
    private String password; 
}
3.编写实体类
public interface UserinfoMapper extends BaseMapper<Userinfo> {
    Userinfo selectById(int id);
    List<Userinfo> selectPagedUsers(@Param("offset") int offset, @Param("pageSize") int pageSize);
}
4.编写Mapper接口
@SpringBootApplication 
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
5.编写测试类
 @Autowired
    private UserinfoMapper userinfoMapper; 

    @Test
    public void testSelectById() {
        int userId = 8; 
        Userinfo result = userinfoMapper.selectById(userId);
        System.out.println(result); 
    }
6.测试结果

二、XML 分页

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

1.在开始使用 xml 之前,需要添加如下配置,告知 mybatis 的 xml 存放路径。
mybatis-flex:
  mapper-locations:
    - classpath*:/mapper/*.xml
2.配置完成后,开始编写 xml 和 mapper 代码,如下所示:

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.example.demo.mapper.UserinfoMapper">

    <select id="selectById" parameterType="int" resultType="com.example.demo.entity.Userinfo">
        SELECT * FROM tb_userinfo WHERE id = #{id}
    </select>
    
    <select id="selectPagedUsers" parameterType="map" resultType="com.example.demo.entity.Userinfo">
        SELECT * FROM tb_userinfo
        ORDER BY id
        LIMIT #{offset}, #{pageSize}
    </select>
</mapper>

mapper:

public interface UserinfoMapper extends BaseMapper<Userinfo> {
    Userinfo selectById(int id);
    List<Userinfo> selectPagedUsers(@Param("offset") int offset, @Param("pageSize") int pageSize);
}
3.编写服务类
@Service
public class UserinfoService {
    @Autowired
    private UserinfoMapper userinfoMapper;
    public List<Userinfo> getPagedUsers(int currentPage, int pageSize) {
        int offset = (currentPage - 1) * pageSize;
        return userinfoMapper.selectPagedUsers(offset, pageSize);
    }
}
4.编写测试类
    @Autowired
    private UserinfoService userinfoService; // 注入 UserinfoServiceS
    @Test
    public void testGetUsers() {
        int page = 1;
        int size = 5;
        List<Userinfo> users = userinfoService.getPagedUsers(page, size);
        users.forEach(user -> System.out.println(user));
    }
5.测试结果

标签:原生,功能,pageSize,int,id,offset,MyBatis,tb,public
From: https://blog.csdn.net/2302_79293116/article/details/142619873

相关文章

  • IDea中使用MyBatis 实现原生功能和xml分页功能
    在开始之前,我们假定您已经:熟悉Java环境配置及其开发熟悉关系型数据库,比如MySQL熟悉SpringBoot及相关框架熟悉Java构建工具,比如Maven        今天我们要了解和学习的是MyBatis原生功能,在MyBatis中提供了 @Insert 、@Delete 、@Update 、@Select 4......
  • Mybatis(三)
    4.9.4延迟加载        延迟加载,就是在使用数据时,进行查询操作,不使用时,不提前加载。可以节省内存,提高查询效率。第一种方式:局部配置(映射文件)在<association>标记里配置如下属性:fetchType="lazy"     lazy:延迟加载 eager:不延迟加载如下: <......
  • 基因功能探索:DAP-seq技术如何简化研究流程
     探索基因奥秘:DNA亲和纯化测序技术与组蛋白甲基化研究的新纪元在生物科学的世界中,基因的研究一直是一个神秘而深奥的领域。随着科技的不断进步,我们对基因的探索工具也在不断革新。今天,我们要为大家介绍两种前沿的技术:DNA亲和纯化测序(DAP-seq)和组蛋白甲基化修饰工具(H3K4me3Ch......
  • 准备蓝桥杯和ACM:C++标准库头文件及其常用功能简介
    概述        在C++编程中,标准库为开发者提供了丰富的工具和功能,使得代码更简洁、易于维护。本文将深入探讨一些常用的C++标准库头文件,如<iostream>、<algorithm>、<string>等,以及它们所提供的基本功能与常见用法。通过对这些头文件的理解和应用,开发者能够更加高效地......
  • SpringBoot与MyBatis-Plus的整合与综合实例
    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程、以及高级映射。MyBatis3提供的注解可以取代XML。例如,使用注解@Select直接编写SQL完成数据查询。MyBatis-Plus是一个对MyBatis进行增强的工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生......
  • MyBatis-Plus分页查询
    在实际开发中,对于大量数据的查询,可以通过分页查询的方式来减少查询量和提高查询效率。在MyBatis-Plus中,分页查询可以通过使用Page对象和IService接口提供的分页方法来实现。MyBatis-Plus的分页插件PaginationInnerInterceptor提供了强大的分页功能,支持多种数据库,使得......
  • 轻松上手MyBatis反向工程:从零到一的自动化代码生成
    前言反向工程概念:反向工程是从已有的具体实现(如数据库表结构)中推导出高层次的信息(如Java代码)的过程。在MyBatis中,它特指根据数据库表结构自动生成Java实体类、Mapper接口和XML映射文件。原理:MyBatis反向工程通过读取数据库表结构的元数据(如表名、字段名、字段类型等),然后利......
  • 今日指数项目股票成交量对比功能
    股票成交量对比功能1.股票成交量对比功能分析1.1模型示列功能描述:统计A股大盘T日和T-1日成交量对比功能(成交量为沪深两市成交量之和)1.2接口示列返回数据格式服务路径:/api/quot/stock/tradeAmt服务方法:GET前端请求频率:每分钟请求参数:无{"code":1,"da......
  • 云原生之运维监控实践-OpenEuler22.03SP3上安装Prometheus与Grafana实现主机状态监测
    背景如果没有监控,那么最好的情况是没有问题发生,最糟糕的情况则是问题发生了但没有被发现。——《Prometheus监控实战》去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是docker-compose在单台机器上部署若依微服务ruoyi-cloud项目;在这个......
  • Vue3 + Pinia 仿抖音项目:移动端最佳实践,体验原生App般流畅
    嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法摘要:在移动端开发领域,Vue.js一直以其轻量级和易用性著称。今天,我们要介绍的是一个将Vue3和Pinia结合使用的开源项目——Douyin-Vue,这是一个模仿抖音(TikTok)的移动端短视频应用,展现了......