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用法同 ...
随机推荐
- 常见速率协议的CDR带宽情况
100G PAM4 4MHZ 802.3/OIF-CEI 50G PAM4 4MHZ 802.3/OIF-CEI 28G PAM4 4MHZ 802.3/OIF-CEI 28G PAM4 4MHZ 8 ...
- Java并发(十七)----变量的线程安全分析
1.成员变量和静态变量是否线程安全 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全 如果有读写操作,则这段代码是临界区,需要考虑线 ...
- [USACO2007FEBS] Cow Party S
题目描述 寒假到了,\(n\) 头牛都要去参加一场在编号为 \(x\) 的牛的农场举行的派对,农场之间有 \(m\) 条有向路,每条路都有一定的长度. 每头牛参加完派对后都必须回家,无论是去参加派对还 ...
- Mybatis-Flex核心功能之@Id
1.是什么? 在 Entity 类中,MyBatis-Flex 是使用 @Id 注解来标识主键的 2.怎么玩? public @interface Id { /** * ID 生成策略,默认为 non ...
- 后端程序员必会的前端知识-04:Vue3
Vue 3 1. TypeScript 1) 动态类型的问题 前面我们讲过 js 属于动态类型语言,例如 function test(obj) { } obj 可能只是个字符串 test('hello ...
- SpringBoot整合Filter过滤器
话不多说,直接上核心代码 1.先创建一个Filter类 package com.qbb.reggie.filter; import com.alibaba.fastjson.JSON; import ...
- 安装了华企盾DSC防泄密,所有进程的加密文件都无法打开
用pchunter等工具查看系统回调中是否有文件厂商不存在的(system目录的除外),在恢复模式删除掉,或者用360系统急救箱查杀一下
- 使用nginx搭建creates.io镜像(稀疏索引)
在Rust开发中,经常需要使用Cargo从crates.io下载依赖,而国内几乎没有好用的crates.io镜像,大多都只对crates.io-index和crates.io进行了镜像,而最重要的st ...
- MOSS对话式大型语言模型
MOSS是复旦大学自然语言处理实验室发布的一种类似于ChatGPT的会话语言模型.MOSS能够按照用户的指示执行各种自然语言任务,包括回答问题.生成文本.摘要文本.生成代码等.MOSS还能够挑战错误的 ...
- 中间件是开箱即用的吗?为什么要开发中间件adapter?
本文分享自华为云社区<中间件是开箱即用的吗?为什么要开发中间件adapter?>,作者:张俭. 中间件在很多系统中都存在 在一个系统里面,或多或少地都会有中间件的存在,总会有数据库,其他的 ...