使用Mybatis-flex注解和xml方式举行mysql添加,查询,分页
首先我必须声明,注解开发跟xml开发的区别,在实际开发中,可以根据项目标需求和特点来选择使用 XML 映射文件还是注解。对于简朴的 CRUD 操作,使用注解可以镌汰文件数量,使代码更加简洁;而对于复杂的查询逻辑和映射关系,则建议使用 XML 映射文件以包管代码的可读性和可维护性。
对于新手我更为推荐注解开发,由于只要你有的sql语句会写那就都不是题目。
首先我们还是必须要有两个包

entity跟mapper包,entity用来其实就是been包,也叫po包看个人喜好,mapper包是不能更改的,用来存放映射文件。
首先必须要有数据库,以下是我已经建好的数据库
- /*
- 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;
复制代码
必须先查抄你的yml文件设置对不对
创建实体类
然后创建相干的类,比方我写的是用户,我就在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();
- }
复制代码
根据本身的业务需求返回相对应的范例。
打开测试类,声明映射文件,加上主动装配
编写测试类:
- @Autowired
- private UserMapper userMapper;
- @Test
- void test2(){
- User u = userMapper.selectById(1);
- System.out.println(u);
- }
复制代码 结果:
在resources下面创建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.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插件,那就可以点击小鸟快速到达接口
结果
分页使用到了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);
复制代码 一键三连给你办理题目
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |