使用 MyBatis 原生功能

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

1.创建数据库

CREATE TABLE IF NOT EXISTS tb_userinfo (
    id INT AUTO_INCREMENT COMMENT '用户编号' PRIMARY KEY,
    user_name VARCHAR(20) NOT NULL COMMENT '用户姓名',
    password VARCHAR(32) NOT NULL COMMENT '密码'
) COMMENT '用户表';

INSERT INTO tb_userinfo (user_name, password) VALUES 
('Alice', 'password123'),
('Bob', 'securePassword!'),
('Charlie', 'myP@ssw0rd'),
('David', 'D4v1d@2024'),
('Eva', 'Eva!Secure'),
('Frank', 'Fr@nkPass456'),
('Grace', 'G1234rce!'),
('Hannah', 'H@nnaH2024!');

-- 查询以确认插入
SELECT * FROM tb_userinfo;

2.创建实体类

@Data
@Table("tb_userinfo") // 指定该类对应的数据库表名为 user_info
public class Userinfo {
    @Id(keyType = KeyType.Auto) // 指定 id 字段为主键,自增长
    private int id; // 用户编号
    private String user_name; // 用户姓名
    private String password; // 密码
}

3.创建Mapper接口

public interface UserinfoMapper extends BaseMapper<Userinfo> {
    //原生查询
    @Select("select * from tb_userinfo where id=#{id}")

    Userinfo selectById(int id);
    //分页
    List<Userinfo> selectPagedUsers(@Param("offset") int offset, @Param("pageSize") int pageSize);
}

4.启动 Spring Boot 应用程序。扫描和配置 MyBatis 映射器


@SpringBootApplication // 标记该类为 Spring Boot 应用的入口
@MapperScan("com.example.demo.mapper") // 指定 MyBatis 映射器接口的包路径
public class DemoApplication {
    public static void main(String[] args) {
        // 启动 Spring Boot 应用
        SpringApplication.run(DemoApplication.class, args);
    }
}

5.创建测试类文件

    @Autowired
    private UserinfoMapper userinfoMapper; // 注入 UserinfoMapper

    @Test
    public void testSelectById() {
        int userId = 1; // 假设你要查询的用户 ID
        // 查询用户信息
        Userinfo result = userinfoMapper.selectById(userId);
        System.out.println(result); // 使用 println 输出结果
    }

6.运行结果

二.使用 xml 的方式进行XML分页

1.数据库和实体类第一步已经创建直接使用就可以

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

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

3.编写 xml 和 mapper 代码

<?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>
public interface UserinfoMapper extends BaseMapper<Userinfo> {
    //原生查询
    //@Select("select * from tb_userinfo where id=#{id}")
    Userinfo selectById(int id);
    //分页
    List<Userinfo> selectPagedUsers(@Param("offset") int offset, @Param("pageSize") int pageSize);
}

4.创建一个服务类

@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);// 调用 Mapper 的方法获取分页用户
    }
}

5.创建测试类

    @Autowired
    private UserinfoService userinfoService; // 注入 UserinfoServiceS
    @Test
    public void testGetUsers() {
        int page = 2; // 设置页码
        int size = 4; // 设置每页大小
        // 直接调用 getUsers 方法
        List<Userinfo> users = userinfoService.getPagedUsers(page, size);
        // 输出到控制台
        users.forEach(user -> System.out.println(user));
    }

6.运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值