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用法的更多相关文章

  1. 每天玩转3分钟 MyBatis-Plus - 6. select 用法

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  2. IDEA上创建 Maven SpringBoot+mybatisplus+thymeleaf 项目

    概述 在WEB领域,Java也是在不断的探索和改进,从开始的JSP--->Struts1--->Struts2+Spring--->Spring MVC--->SpringBo ...

  3. 2、SpringBoot+MybatisPlus整合-------BaseCRUD

    开发工具:STS 代码下载链接:GitHub管理代码 版本: Springboot:1.5.14.RELEASE 使用2.0以上的Springboot,会报出一些异常.欢迎知道异常原因的大牛解惑. M ...

  4. springboot+mybatisplus+sharding-jdbc分库分表实例

    项目实践 现在Java项目使用mybatis多一些,所以我也做了一个springboot+mybatisplus+sharding-jdbc分库分表项目例子分享给大家. 要是用的springboot+ ...

  5. springboot + mybatisPlus 入门实例 入门demo

    springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...

  6. html select用法总结

    本文将介绍select 原生的常用方法,这些都是经过测试,兼容ie6到ie10,及chrome,火狐等,也就是说大部分浏览器都兼容.如果大家发现有不兼容的情况,可以跟我留言. 我们对基本的用法了如指掌 ...

  7. 网络通信 --> select()用法

    select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义 ...

  8. spring-boot+mybatisPlus+shiro的集成demo 我用了5天

    spring-boot + mybatis-plus + shiro 的集成demo我用了五天 关于shiro框架,我还是从飞机哪里听来的,就连小贱都知道,可我母鸡啊.简单百度了下,结论很好上手,比s ...

  9. python+selenium七:下拉框、选项框、select用法

    # from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimpo ...

  10. golang学习之select用法

    早期的select函数是用来监控一系列的文件句柄,一旦其中一个文件句柄发生IO操作,该select调用就会被返回.golang在语言级别直接支持select,用于处理异步IO问题. select用法同 ...

随机推荐

  1. wps表格怎么打印选中区域的内容?

    打印选中区域的内容,您可以按照以下步骤进行操作: 选择要打印的区域 打开 WPS 表格,在工作表中选择您希望打印的区域.您可以拖动鼠标或使用键盘中的方向键来选择单元格. 设置打印区域 一旦您选中了需要 ...

  2. 解密数据可视化软件、BI软件和数字孪生软件的不同

    在现代企业和科技领域,数据起着至关重要的作用.为了更好地管理和理解数据,不同类型的软件工具应运而生,其中包括数据可视化软件.BI(Business Intelligence)软件和数字孪生软件.虽然它 ...

  3. Java注解,看完就会用

    一.什么是注解 定义:注解(Annotation),也叫元数据.一种代码级别的说明. 它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次. 它可以声明在包.类.字段.方法.局部变 ...

  4. Python——第一章:注释、变量、常量

    python中的注释有2种: 1.单行注释 单行注释用# #这是一个单行注释 快捷键用Ctrl+/全选多个内容可以多行快速注释,也可以快速去掉注释符# 比如快速将全选的所有行注释掉--加# 2.多行注 ...

  5. 云图说丨什么是应用身份管理服务OneAccess

    摘要: OneAccess是华为云提供的应用身份管理服务,具备集中式的身份管理.认证和授权能力,保证企业用户根据权限访问受信任的云端和本地应用系统,并对异常访问行为进行有效防范,真正做到事前预防.事中 ...

  6. Flutter加固原理及加密处理

    ​ 引言 为了保护Flutter应用免受潜在的漏洞和攻击威胁,加固是必不可少的措施之一.Flutter加固原理主要包括代码混淆.数据加密.安全存储.反调试与反分析.动态加载和安全通信等多个方面.通过综 ...

  7. 既快又稳还方便,火山引擎 VeDI 的这款产品解了分析师的愁

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 "数据加载速度变快了."这是小吴在使用 DataWind 后的第一感受. 目前就职于国内一家手 ...

  8. 火山引擎数智平台拆解 APP改版场景中蕴含的数据思维

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 你有没有遇到过,打开一款经常使用的 APP,它却跳出一条需要你升级版本的提示? 大多数情况下,用户可能会直接点击「 ...

  9. Java 网络编程 —— 实现非阻塞式的客户端

    创建阻塞的 EchoClient 客户程序一般不需要同时建立与服务器的多个连接,因此用一个线程,按照阻塞模式运行就能满足需求 public class EchoClient { private Soc ...

  10. Linux day2:文件和文件夹相关命令 文件内容编辑命令 Linux常用目录 Linux重要文件

    目录 问题说明 前期必备知识 系统运行命令 shutdown -c 快捷方式命令 ctrl+e 目录结构相关命令 mkdir -p 文件和文件夹相关命令 创建文件 touch 查看文件和目录 ls - ...