MyBatis-plus使用版,直接上简单示例

news/2024/5/5 22:55:58/文章来源:https://blog.csdn.net/m0_46638350/article/details/129998008

文章目录

  • 一、使用MyBatis-plus提供的SQL
    • 1. 创建数据库数据表
    • 2. 导入依赖
    • 3. 配置application.yml
    • 4. 编写实体类
    • 5. 编写dao接口:UserMapper.java
    • 6. 编写启动类
    • 7. 运行结果
  • 二、使用自定义的SQL
    • 第一种自定义SQL方式
    • 第二种自定义SQL方式

建库建表===>引入依赖===>配置===>编码===>测试

一、使用MyBatis-plus提供的SQL

1. 创建数据库数据表

#创建数据库
create table user (  id BIGINT(20) PRIMARY key not null comment '主键', 
name varchar(30) default null comment '姓名',
age int(11) default null comment '年龄', 
email varchar(50) default null comment '邮箱',   
manager_id BIGINT(20) default null comment '直属上级id',   
create_time DATETIME default null comment '创建时间',  
CONSTRAINT manager_fk foreign key (manager_id)          
REFERENCES user (id)) ENGINE=INNODB CHARSET=UTF8;#数据初始化
INSERT INTO user (id,name,age,email,manager_id,create_time)
VALUES (1087982257332887553, '猪头', 20, 'boss@baomidou.com', NULL, 
'2019-01-11 14:20:20'),            
(1088248166370832385,'小懒猪',20,'wtf@baomidou.com', 1087982257332887553,
'2019-02-05 11:12:22'),            
(1088250446457389058,'小白',18,'lyw@baomidou.com', 1088248166370832385,
'2019-02-14 08:31:16'),            
(1094590409767661570,'小黑',21,'zyq@baomidou.com', 1088248166370832385,
'2019-01-14 09:15:15'),            
(1094592041087729666,'小可耐',22,'lhm@baomidou.com', 1088248166370832385,
'2019-01-14 09:48:16');

2. 导入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- Mybatis-Plus启动器 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency>
</dependencies>

3. 配置application.yml

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mp?useSSL=false&serverTimezone=GMT%2B8username: rootpassword: 1214

4. 编写实体类

@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user")
public class User {// 主键private Long id;// 姓名@TableField(value = "name", condition = SqlCondition.LIKE)private String name;// 年龄@TableField(condition = "%s&lt;#{%s}")private Integer age;// 邮箱private String email;// 直属上级idprivate Long managerId;// 创建时间private Date createTime;// 备注(不与数据库字段对应) # transient 不参与序列化@TableField(exist = false)private String remark;
}

5. 编写dao接口:UserMapper.java

public interface UserMapper extends BaseMapper<User> {
}

6. 编写启动类

@RunWith(SpringRunner.class)
@SpringBootTest
public class SimpleTest {@Autowiredprivate UserMapper userMapper;@Testpublic void select() {List<User> list = userMapper.selectList(null);Assert.assertEquals(5, list.size());list.forEach(System.out::println);}
}

7. 运行结果

在这里插入图片描述

二、使用自定义的SQL

第一种自定义SQL方式

自定义SQL

@Component
public interface UserMapper extends BaseMapper<User> {// ${ew.customSqlsegment}可以使条件构造器构造的sql被执行。@Select("select * from user ${ew.customSqlSegment}")List<User> selectBySql(@Param(Constants.WRAPPER) Wrapper<User> userWrapper);
}

编写启动类

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperSqlTest {@Autowiredprivate UserMapper userMapper;@Testpublic void selectBySql(){LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();// 在这里对select查询语句做条件查询,后面给出这些方法的作用userLambdaQueryWrapper.like(User::getUsername , "k").lt(User::getAge , 40).last("limit 4");List<User> userList = userMapper.selectBySql(userLambdaQueryWrapper);userList.forEach(System.out::println);}
}

在这里插入图片描述

第二种自定义SQL方式

把UserMapper接口中@Select注解那一行删掉。

@Component
public interface UserMapper extends BaseMapper<User> {List<User> selectBySql(@Param(Constants.WRAPPER) Wrapper<User> userWrapper);
}

在resources/mappers/UserMapper.xml下编写SQL语句

<?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.kaven.mybatisplus.dao.UserMapper"><select id="selectBySql" resultType="com.kaven.mybatisplus.entity.User">select * from user ${ew.customSqlSegment}</select>
</mapper>

记得在核心配置文件中添加这些配置信息,缺啥补啥

spring:application:name: mybatis-plusdatasource:driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: ITkaven@123url: jdbc:mysql://47.112.7.219:3306/test?characterEncoding=utf-8&useSSL=falseserver:port: 8085logging:level:root: warncom.kaven.mybatisplus.dao: tracepattern:console: '%p%m%n'mybatis-plus:mapper-locations: classpath:mappers/*.xml

编写启动类

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperSqlTest {@Autowiredprivate UserMapper userMapper;@Testpublic void selectBySql(){LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();// 在这里对select查询语句做条件查询,后面给出这些方法的作用userLambdaQueryWrapper.like(User::getUsername , "k").lt(User::getAge , 40).last("limit 4");List<User> userList = userMapper.selectBySql(userLambdaQueryWrapper);userList.forEach(System.out::println);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_282449.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序开发-云数据库去除重复注册用户

问题 可能是在提交注册信息时&#xff0c;重复提交了多次。设计时&#xff0c;提交注册页面在提交数据后没有立即跳转页面&#xff0c;于是用户可能多次点击提交&#xff0c;这时小程序还没有来得及检验数据库是否已存在该用户&#xff0c;造成一个用户的“_openid”注册出多个…

Qt 实现仿QQ登录界面的完善

目录要求头文件widget.hform.h源文件widget.cppform.cpp主函数 main.cpp结果展示要求 完善登录界面 点击登录按钮后&#xff0c;判断账号和密码是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&…

2023年造林绿化施工单位丙级资质,新申请要配备多少个人员呢?

&#xff08;一&#xff09;新申请资质程序&#xff1a; 1.网上申请。 2.书面材料报送。 &#xff08;二&#xff09;资质等级&#xff1a;分为甲级、乙级、丙级三个等级。 &#xff08;三&#xff09;丙级施工单位资质条件&#xff1a; 3.1 资历和信誉 应同时具备以下条…

python调用C++编译的动态库中的函数记录

1. 引言 在深度学习模型部署上经常需要用到python来处理C推理后的模型后处理部分&#xff0c;那么就可以用到pybind11来对C代码封装成动态库&#xff0c;方便python进行后处理操作 本验证demo的文件组成&#xff1a; 2.pybind11准备 首先安装一下对应包&#xff1a; pip …

凸优化学习笔记:等式约束凸优化问题的Newton方法、不可行初始点的Newton方法

文章目录凸优化学习笔记&#xff1a;等式约束凸优化问题的Newton方法、不可行初始点的Newton方法等式约束凸优化问题等式约束凸二次规划等式约束的Newton方法Newton方向&#xff1a;基于二阶近似的定义Newton减量&#xff1a;用于设计停止准则算法框架不可行初始点的Newton方法…

汇编实验4(99乘法表,整数分解,素数环,迷宫问题)【栈传参,递归,寻址方式】

目录 一、99乘法表 汇编代码 效果 二、整数拆分 问题描述 c代码 汇编代码 效果 三、素数环 问题描述 c代码 效果 四、迷宫问题 问题描述 c代码 汇编代码 效果 一、99乘法表 汇编代码 INCLUDE Irvine32.inc .data a db *,0 .code main PROC mov ebx,1;ebxi m…

从实际代码出发了解量子相位估计算法的原理

量子相位估计&#xff08;Quantum Phase Estimation, QPE&#xff09;是一种用于测量一个量子态的相位的算法。QPE算法的核心是一个相位估计电路&#xff0c;其中包含了一系列Hadamard变换、控制相位旋转门和逆量子傅里叶变换等量子门。其中&#xff0c;控制相位旋转门是QPE算法…

AI绘画热点模型大汇总,让你一次用个够

AI绘画热点模型大汇总&#xff0c;让你一次用个够 前段时间&#xff0c;在利用ControlNet重新定义你的AI姿势中提到了如何利用快捷方式节省谷歌硬盘&#xff0c;由于目前收集到的模型站点涉及的模型较少&#xff0c;且缺少lora模型。因此寻思着自己是不是也可以做一些热点模型…

【stable-diffusion】4090显卡下dreambooth、lora、sd模型微调的GUI环境安装(cuda驱动、pytorch、xformer)

相关博文 stable-diffusion-webui的基础功能手动安装&#xff0c;了解代码结构、依赖、模型出处 安装成功结果 主要参考 cuda11.7下载-https://developer.nvidia.com/cuda-toolkit-archivecudnn8.6 for 11.x : https://developer.nvidia.com/rdp/cudnn-archivedreambooth\lora…

Spring实战(开发Web应用)

开发Web应用展现信息构建领域类创建控制器类设计视图处理表单提交校验表单输入声明校验规则在表单绑定的时候执行校验展现校验错误视图控制器选择视图模板库小结展现信息 Taco Cloud是一个可以在线订购taco的地方。 Taco Cloud允许客户展现其创意&#xff0c; 能够让他们通过丰…

单点登录的认证过程,我拿到票据了, 可以卖肉了吗?

我拿到票据了, 可以卖肉了吗? SSO: 只能买一两, 不能再多了 单点登录的认证过程是如何的, 比方说单点登录服务D, 子系统A和B, A B D和浏览器之间是如何通信的 以下是单点登录&#xff08;SSO&#xff09;过程的详细步骤&#xff1a; 用户尝试访问子系统A。子系统A检查用户是否…

洛谷B2037奇偶数判断

洛谷B2037 题目描述 给定一个整数&#xff0c;判断该数是奇数还是偶数。如果 n 是奇数&#xff0c;输出 odd&#xff1b;如果 n 是偶数&#xff0c;输出 even。 输入格式 输入仅一行&#xff0c;一个整数 n。 输出格式 输出仅一行&#xff0c;如果n 是奇数&#xff0c;输出 o…

二分查找(二)

2.练习题 3&#xff09; 力扣https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/这题需要分三种情况&#xff0c;第一种是区间有序&#xff0c;正常二分查找&#xff0c;第二种是区间 被旋转&#xff0c;左区间的值大于右区间&#xff0c;需要比较目标值和左区…

如何计算和提高客户生命周期价值 (LTV)

客户生命周期价值&#xff08;LTV或 CLV&#xff09;是衡量客户在其生命周期内为企业带来的总价值的关键指标。在电子商务中&#xff0c;LTV在决定企业的健康和成功方面起着至关重要的作用。LTV越高&#xff0c;业务的盈利能力和可持续性就越高。最常见的 LTV公式&#xff1a;L…

iphone distribution

未受信任的企业级开发者 通用 - VPN与设备管理 显示你下载的APP列表&#xff0c;点击进入 点击【信任xxxxx】

codeblocks20.3配置wxWidget3.2.2.1

codeblocks20.3 # 英文版自带gcc810&#xff0c;不汉化 wxWidget3.2.2.1 github下载源码 win11专业版 1.下载wxWidget3.2.2.1 源码 2.下载后解压到一个目录中&#xff0c;不要含中文和空格。我放在&#xff1a;d:\wxWidget3.2.2.1 3.打开终端cd build/msw 4.编译wxWidgets 为 …

多重背包问题 二进制优化 java 路径记录

多重背包---二进制拆分---java小知识_java多重背包问题_m78星云杰克的博客-CSDN博客 应该可以使用完全背包问题的记录路径的方法&#xff0c;例如&#xff0c;使用二维数组记录&#xff0c;记录当前硬币需要多少个

音视频骚操作,FFmpeg 如何播放带「图片」的 M3U8 视频,IJKPlyaer 适配非标 TS 文件

如果看到一个需要播放的视频链接显示是一张图片&#xff0c;你会不会感觉有点懵&#xff1f;如果这张图片写着 png&#xff0c;然后实际格式是 bmp &#xff0c;你会不会更懵了&#xff1f;如果这个 bmp 还做了加密篡改呢&#xff1f;今天我们要聊的就是这样一个充满骚操作的音…

css三角和css 用户见面样式,vertical-align 属性应用,溢出的文字省略号显示,常见布局技巧

目录 3.CSS三角 4.CSS 用户界面样式 4.1什么是界面样式 4.2轮廓线 outline 4.3 防止拖拽文本域 resize 5.vertical-align 属性 5.1图片,表单都属于行内块元素&#xff0c;默认的vertical-align 是基线对齐。 5.2解决图片底部默认空白缝隙问题 6.溢出的文字省略号显示 1.单…

linux centos7 查看端口占用命令netstat 报错提示 –bash:netstat:未找到命令解决方法

今天在一台centos7上用netstat命令看端口占用情况&#xff0c;提示 –bash:netstat:未找到命令&#xff1a; 解决方法&#xff1a; 输入 yum search ifconfig 查看这个命令是在 net-tools.x86_64里的&#xff1a; 然后安装这个包&#xff0c;输入 yum install net-tools 安装&…