SpringBoot-mybatisplus-@select用法
mybatisplus查询本生已经挺丰富,但有的时候还是想自己写sql语句,怎么写?这时候就需要使用@select来实现,具体用法如下:
1、数据准备
CREATE TABLE XY_DIC_BLOCK_T
(
BLOCK_ID VARCHAR2(10 BYTE),
BLOCK_NAME VARCHAR2(200 BYTE),
PARENT_BLOCK_ID VARCHAR2(10 BYTE),
BLOCK_LEVEL NUMBER(4),
ICO VARCHAR2(100 BYTE),
ORDER_NUM NUMBER(10,2)
); Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME, BLOCK_LEVEL, ORDER_NUM) Values ('1', '后端开发', 1, 1);
Insert into XY_DIC_BLOCK_T (BLOCK_ID, BLOCK_NAME, BLOCK_LEVEL, ORDER_NUM) Values ('2', '前端开发', 1, 2);
COMMIT;
2、pom.xml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.17.RELEASE</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.17.RELEASE</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- 集成mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency> <!-- oracle驱动 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
3、配置文件

4、工程结构

5、源码
package com.example.demo.controller; import com.example.demo.domain.Block;
import com.example.demo.mapper.BlockMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
@RequestMapping("/hello")
public class HelloController { @Autowired
private BlockMapper blockMapper; @GetMapping("/list")
@ResponseBody
public List<Block> list() {
//直接调用BaseMapper封装好的CRUD方法,就可实现无条件查询数据
List<Block> list = blockMapper.selectList(null);
return list;
} @GetMapping("/sqlList")
@ResponseBody
public List<Block> sqlList(String level) {
//调用没有参数的sql语句
List<Block> list = blockMapper.sqlMany();
return list;
} @GetMapping("/sqlParmList")
@ResponseBody
public List<Block> sqlParmList(String level) {
//调用有参数的sql语句,参数不能为null
List<Block> list = blockMapper.sqlManyParm(level);
return list;
} @GetMapping("/sqlParmListNull")
@ResponseBody
public List<Block> sqlParmListNull(String level) {
//调用有参数的sql语句,参数可以为null
List<Block> list = blockMapper.sqlManyParmNull(level);
return list;
} @GetMapping("/sqlManyObject")
@ResponseBody
public List<Block> sqlManyObject(Block block) {
//调用有参数的sql语句,参数以对象形式传递
List<Block> list = blockMapper.sqlManyObject(block);
return list;
}
}
package com.example.demo.domain; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; @TableName(value = "XY_DIC_BLOCK_T")
public class Block {
private static final long serialVersionUID = 1L; @TableId
private String blockId; private String blockName; private String parentBlockId; private String blockLevel; private int orderNum; public String getBlockId() {
return blockId;
} public void setBlockId(String blockId) {
this.blockId = blockId;
} public String getBlockName() {
return blockName;
} public void setBlockName(String blockName) {
this.blockName = blockName;
} public String getParentBlockId() {
return parentBlockId;
} public void setParentBlockId(String parentBlockId) {
this.parentBlockId = parentBlockId;
} public String getBlockLevel() {
return blockLevel;
} public void setBlockLevel(String blockLevel) {
this.blockLevel = blockLevel;
} public int getOrderNum() {
return orderNum;
} public void setOrderNum(int orderNum) {
this.orderNum = orderNum;
} @Override
public String toString() {
return "Block{" +
"blockId='" + blockId + '\'' +
", blockName='" + blockName + '\'' +
", parentBlockId='" + parentBlockId + '\'' +
", blockLevel='" + blockLevel + '\'' +
", orderNum=" + orderNum +
'}';
}
}
package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.domain.Block;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper
public interface BlockMapper extends BaseMapper<Block> { @Select("select BLOCK_ID,BLOCK_NAME,PARENT_BLOCK_ID,BLOCK_LEVEL,ORDER_NUM from XY_DIC_BLOCK_T where block_level=1 " )
public List<Block> sqlMany(); @Select("select BLOCK_ID,BLOCK_NAME,PARENT_BLOCK_ID,BLOCK_LEVEL,ORDER_NUM from XY_DIC_BLOCK_T where block_level=#{level}" )
public List<Block> sqlManyParm(String level); @Select("<script> select BLOCK_ID,BLOCK_NAME,PARENT_BLOCK_ID,BLOCK_LEVEL,ORDER_NUM from XY_DIC_BLOCK_T where 1=1 " +
"<if test='level != null'>" + " and block_level=#{level} " + "</if>" +
"</script>")
public List<Block> sqlManyParmNull(String level); @Select("<script> select BLOCK_ID,BLOCK_NAME,PARENT_BLOCK_ID,BLOCK_LEVEL,ORDER_NUM from XY_DIC_BLOCK_T where 1=1 " +
"<if test='item.blockLevel != null'>" + " and block_level=#{item.blockLevel} " + "</if>" +
"</script>")
public List<Block> sqlManyObject(@Param("item") Block block);
}
package com.example.demo; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
} }
6、测试文件下载
(1)mybatisplus自带的批量查询

(2)调用没有参数的sql语句

(3)调用有参数的sql语句,参数不能为null

(4)调用有参数的sql语句,参数可以为null

(5)调用有参数的sql语句,参数以对象形式传递

推荐一个适合零基础学习SQL的网站:不用安装数据库,在线轻松学习SQL!
SpringBoot-mybatisplus-@select用法的更多相关文章
- 每天玩转3分钟 MyBatis-Plus - 6. select 用法
每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...
- IDEA上创建 Maven SpringBoot+mybatisplus+thymeleaf 项目
概述 在WEB领域,Java也是在不断的探索和改进,从开始的JSP--->Struts1--->Struts2+Spring--->Spring MVC--->SpringBo ...
- 2、SpringBoot+MybatisPlus整合-------BaseCRUD
开发工具:STS 代码下载链接:GitHub管理代码 版本: Springboot:1.5.14.RELEASE 使用2.0以上的Springboot,会报出一些异常.欢迎知道异常原因的大牛解惑. M ...
- springboot+mybatisplus+sharding-jdbc分库分表实例
项目实践 现在Java项目使用mybatis多一些,所以我也做了一个springboot+mybatisplus+sharding-jdbc分库分表项目例子分享给大家. 要是用的springboot+ ...
- springboot + mybatisPlus 入门实例 入门demo
springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...
- html select用法总结
本文将介绍select 原生的常用方法,这些都是经过测试,兼容ie6到ie10,及chrome,火狐等,也就是说大部分浏览器都兼容.如果大家发现有不兼容的情况,可以跟我留言. 我们对基本的用法了如指掌 ...
- 网络通信 --> select()用法
select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义 ...
- spring-boot+mybatisPlus+shiro的集成demo 我用了5天
spring-boot + mybatis-plus + shiro 的集成demo我用了五天 关于shiro框架,我还是从飞机哪里听来的,就连小贱都知道,可我母鸡啊.简单百度了下,结论很好上手,比s ...
- python+selenium七:下拉框、选项框、select用法
# from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimpo ...
- golang学习之select用法
早期的select函数是用来监控一系列的文件句柄,一旦其中一个文件句柄发生IO操作,该select调用就会被返回.golang在语言级别直接支持select,用于处理异步IO问题. select用法同 ...
随机推荐
- c语言实现this指针效果
概要 由于目前在做一个比较复杂的嵌入式项目,想要借此提升一下代码的结构设计能力,所以想要以面向对象的思想来完成这个项目,即把每个板载外设资源视为一个对象,采用msp+bsp的模式,对每个bsp外设实现 ...
- 0x03.api接口
API接口安全 HTTP类接口 SOAP----->http+xml REST------>传递资源 RPC类接口(非web):用于远程调用,类似于客户端和服务端.如,登录的时候,进入服务 ...
- 浅析MySQL代价模型:告别盲目使用EXPLAIN,提前预知索引优化策略
背景 在 MySQL 中,当我们为表创建了一个或多个索引后,通常需要在索引定义完成后,根据具体的数据情况执行 EXPLAIN 命令,才能观察到数据库实际使用哪个索引.是否使用索引.这使得我们在添加新索 ...
- Chrome扩展的核心:manifest 文件(上)
大家好,我是dom哥.我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以点个小星星. Chrome 在全球浏览器市场份额独占 6 成,无论是对普通用户还是开发者,都是电脑里的必备利器.Chr ...
- 【UniApp】-uni-app-项目计算功能(苹果计算器)
前言 本文主要介绍苹果计算器项目中计算功能的实现 在前面的文章中已经实现了输入,动态计算字体大小,以及计算器的布局 本文主要介绍计算功能的实现 正文 实现/清空/改变正负/除以100 inputTex ...
- DEDECMS 后台系统用户授权目录更改为无限级(默认为二级授权)
在做一个学校的项目,分类有四级分类,总共一百多个分类,因为每个分类对应不同的老师,用于上传资料作为考核,但是添加系统用户的时候发现DEDECMS只有两级分类,所以修改啦一些代码,目前不知道是否修改完全 ...
- ASR项目实战-交付过程中遇到的内核崩溃问题
当前参与交付的语音识别产品服务,算法模块基于经典的Kaldi,算法中的一部分运行在GPU之上. 算法团队采用的是声学模型+语言模型的1-pass方案.这个方案的特点在于,语言模型数据文件(HCLG文件 ...
- Kotlin委托属性(1)
在Kotlin中,委托属性(Delegated Properties)是一种强大的语言特性,允许你将属性的 getter 和 setter 方法的实现委托给其他对象.这使得你能够通过委托来重用代码.将 ...
- 机器学习周刊03:如何学习深度学习?2024 年学习生成式 AI 路线图、如何构建高效的RAG系统、苹果 腾讯最新论文、阿里DreaMoving
腾讯推出的 AppAgent,是一个多模态智能体,通过识别当前手机的界面和用户指令直接操作手机界面,能像真实用户一样操作手机! 机器学习周刊:关注Python.机器学习.深度学习.大模型等硬核技术 1 ...
- Spring MVC的生命周期与简单三大组件的简单介绍
1.说到Spring MVC就会想到它是基于MVC设计模式的思想来设计的: 那么MVC设计模式是什么呢? 下面来介绍一下 MVC 设计模式 MVC是模型(model)-视图(view)-控制器(con ...