使用Mybatis-flex注解和xml方式进行mysql添加,查询,分页

使用Mybatis-flex注解和xml方式进行mysql添加,查询,分页

  • 注解开发(博主推荐)

首先我必须声明,注解开发跟xml开发的区别,在实际开发中,可以根据项目的需求和特点来选择使用 XML 映射文件还是注解。对于简单的 CRUD 操作,使用注解可以减少文件数量,使代码更加简洁;而对于复杂的查询逻辑和映射关系,则建议使用 XML 映射文件以保证代码的可读性和可维护性。

对于新手我更为推荐注解开发,因为只要你有的sql语句会写那就都不是问题。

首先我们还是必须要有两个包

entity跟mapper包,entity用来其实就是been包,也叫po包看个人喜好,mapper包是不能更改的,用来存放映射文件。

  1. 创建数据库

首先必须要有数据库,以下是我已经建好的数据库

/*

 Navicat Premium Data Transfer

 Source Server         : localhost_3306

 Source Server Type    : MySQL

 Source Server Version : 50732

 Source Host           : localhost:3306

 Source Schema         : test

 Target Server Type    : MySQL

 Target Server Version : 50732

 File Encoding         : 65001

 Date: 27/09/2024 16:33:23

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for user

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user`  (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

  `number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of user

-- ----------------------------

INSERT INTO `user` VALUES (1, '你', '123123', '');

INSERT INTO `user` VALUES (2, '是', '321321', '');

INSERT INTO `user` VALUES (3, '哈', '112211', '');

INSERT INTO `user` VALUES (4, '测试', '123', '111');

INSERT INTO `user` VALUES (5, '1', 'aaa', 'bbb');

INSERT INTO `user` VALUES (6, 'demo', '123', '123');

INSERT INTO `user` VALUES (7, 'admin', '110', 'admin');

SET FOREIGN_KEY_CHECKS = 1;

  1. 检查yml配置文件mysql连接池信息对与否

必须先检查你的yml文件配置对不对

  1. 创建实体类和实体类的映射文件
创建实体类

然后创建相关的类,例如我写的是用户,我就在entity包里创建用户类

代码:

package com.waisang.mybatisflex.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

//提供get,set,tostring方法
@Data
//应与数据库的表名一致
@Table("user")
public class User {
//主键类型=主键类型.自增
    @Id(keyType = KeyType.Auto)
    private int id;
    private String user_name;
    private  String password;
    private String number;
}

数据库里有多少字段就要声明多少变量

创建相关的映射文件

在mapper文件下创建

代码:

package com.waisang.mybatisflex.mapper;

import com.mybatisflex.core.BaseMapper;
import com.waisang.mybatisflex.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper extends BaseMapper<User> {
//    注解开发
    @Select("select * from user where id = #{id}")
    User selectById(@Param("id") int id);

//    注解开发
    @Insert("insert into user values (null,#{user_name},#{number},#{password})")
    int insertUser(@Param("user_name")String user_name,@Param("number") String number,@Param("password") String password);
//    xml映射文件开发

    User selectUserByUserName(@Param("user_name") String user_name);
    //    xml映射文件开发

    long selectAll_COUNT();
//    xml映射文件开发

    List<User> selectAll();
}

根据自己的业务需求返回相对应的类型。

  1. 测试

打开测试类,声明映射文件,加上自动装配

编写测试类:

@Autowired
private UserMapper userMapper;
@Test
void test2(){
    User u = userMapper.selectById(1);
    System.out.println(u);
}

结果:

  • Xml映射文件开发:
  1. 创建xml管理包

在resources下面创建mapper包

  1. 创建UserMapper.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.waisang.mybatisflex.mapper.UserMapper">

    <!-- selectByName -->
    <select id="selectUserByUserName" resultType="com.waisang.mybatisflex.entity.User">
        select * from `user` where `user_name` = #{user_name}
    </select>

<!--    分页查询-->
    <select id="selectAll" resultType="com.waisang.mybatisflex.entity.User">
        select * from `user` ${qwSql} limit ${pageOffset}, ${pageSize}
    </select>
<!--    需要写对应的count查询-->
    <select id="selectAll_COUNT" resultType="long">
        select count(*) from `user` ${qwSql}
    </select>
</mapper>

在UserMapper接口映射文件添加相对应的方法

如果你有安装mybatisX插件,那就可以点击小鸟快速到达接口

  1. 测试

结果

  • 分页

分页使用到了mysql的limit,

Xml代码:

<!--    分页查询-->
    <select id="selectAll" resultType="com.waisang.mybatisflex.entity.User">
        select * from `user` ${qwSql} limit ${pageOffset}, ${pageSize}
    </select>
<!--    需要写对应的count查询-->
    <select id="selectAll_COUNT" resultType="long">
        select count(*) from `user` ${qwSql}
    </select>

UserMapper接口映射文件创建相对应的方法;

测试:

QueryWrapper是刚刚xml预留的写sql语句条件查询的地方,也就是qw这段代码springBoot会自动把我们加入到这里,我这里的查询条件是Id值>0的,你可以根据你的实际情况做调整。

Page.of(当前也没,每页条数)

如果qw内的查询条件需要,大于,等于,小于等条件可以参考以下文章

mybatis plus 条件构造器queryWrapper学习_querywapper是什么-CSDN博客

来到测试类测试大功告成。

代码:

QueryWrapper qw = QueryWrapper.create()
                .where(User::getId).gt(0);
        Page<User> page = Page.of(1,3);
//如果你的查询表数量不是标准命名,就需要在dataSelectId后面加上加上"selectAll_COUNT"你定义的查询数量的xmlID
        page = userMapper.xmlPaginate("selectAll",page,qw);
        System.out.println(page);

一键三连给你解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值