MyBatis-Plus 查询指定字段的实现

首先创建一个数据库表,如下图所示:

然后创建一个Spring Boot项目,pom.xml和配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.kaven</groupId>
  <artifactId>mybatis-plus</artifactId>
  <version>1.0-SNAPSHOT</version>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
    <relativePath/>
  </parent>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.0</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>
spring:
 application:
  name: mybatis-plus
 datasource:
  driver-class-name: com.mysql.jdbc.Driver
  username: root
  password: ITkaven@123
  url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=false

server:
 port: 8085

logging:
 level:
  root: warn
  com.kaven.mybatisplus.dao: trace
 pattern:
  console: '%p%m%n'

mybatis-plus:
 mapper-locations: classpath:mappers/*.xml

实体类User:

package com.kaven.mybatisplus.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@TableName("user")
@Data
public class User {

  @TableId
  private String id;

  @TableField("username")
  private String username;

  @TableField("password")
  private String password;

  @TableField("age")
  private Integer age;

  /**
   * 使用 @TableField(exist = false) ,表示该字段在数据库中不存在 ,所以不会插入数据库中
   * 使用 transient 、 static 修饰属性也不会插入数据库中
   */
  @TableField(exist = false)
  private String phone;
}

Mapper接口UserMapper:

package com.kaven.mybatisplus.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kaven.mybatisplus.entity.User;
import org.springframework.stereotype.Component;

@Component
public interface UserMapper extends BaseMapper<User> {}

启动类:

package com.kaven.mybatisplus;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.kaven.mybatisplus.dao")
public class AppRun {
  public static void main(String[] args) {
    SpringApplication.run(AppRun.class , args);
  }
}

@MapperScan(basePackages = "com.kaven.mybatisplus.dao")这个一定要加上。

我们先在数据库中添加几行数据,方便演示。

使用MyBatis-Plus 查询时指定字段有两种方法。

一:查询username包含字符k,并且age要小于35,只需要输出usernameage即可。

package com.kaven.mybatisplus.dao;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kaven.mybatisplus.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Arrays;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {

  @Autowired
  private UserMapper userMapper;

  @Test
  public void selectList(){
    QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
//    QueryWrapper<User> userQueryWrapper = Wrappers.query(); 和上面一样的效果
    userQueryWrapper.select("username", "age").like("username" , "k").lt("age" , 35);
//    userQueryWrapper.like("username" , "k").lt("age" , 35).select("username", "age");
//    把select()放在最后面也可以,但我一般喜欢放在最前面,和sql语法保持一致
    List<User> userList = userMapper.selectList(userQueryWrapper);
    userList.forEach(System.out::println);
  }
}

结果如下:

很显然,结果是正确的。

当数据库表有很多列,并且需要输出大部分列时,用这种方法来指定字段查询就很繁琐,这也是不可避免的。

二:查询username包含字符k,并且age要大于等于25并且小于等于35password不能为null,不需要输出password

package com.kaven.mybatisplus.dao;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kaven.mybatisplus.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Arrays;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {

  @Autowired
  private UserMapper userMapper;

  @Test
  public void selectList2(){
    QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
//    QueryWrapper<User> userQueryWrapper = Wrappers.query(); 和上面一样的效果
    userQueryWrapper.select(User.class , e->!e.getColumn().equals("password")).like("username" , "k")
        .between("age" , 25 , 35)
        .isNotNull("password");
    List<User> userList = userMapper.selectList(userQueryWrapper);
    userList.forEach(System.out::println);
  }
}

结果如下:

结果也是正确的。

这两种方法各有优缺点,可以互补使用。

到此这篇关于MyBatis-Plus 查询指定字段的实现的文章就介绍到这了,更多相关MyBatis-Plus 查询指定字段内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mybatis-plus分页查询的实现示例

    按照官方文档进行的配置:快速开始|mybatis-plus 引入依赖: <!-- 引入mybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!--

  • MyBatis-plus 模糊查询的使用

    在使用MyBatis-plus的时候,一些基础的增删改查可以不用再自己写sql了: public interface UserDao extends BaseMapper<FykUser>{ } 就这样,就可以实现user表的增删改查了. 模糊查询 使用userDao.selectList(queryWrapper)方法,就可以查询出一个用户列表. 如果需要模糊查询,代码如下: //条件封装 QueryWrapper<FykUser> queryWrapper = new Quer

  • MyBatis-Plus 查询返回实体对象还是map

    在常见场景下:返回数据建议使用map,不建议使用实体对象 /** * 1. 名字包含雨并且年龄小于40 * sql:name like '%雨%' and age < 40 * <p> * 应用场景: * 当表字段非常多,但是你只需要查询少数几列, * 没必要返回的泛型为实体的list,如果返回的泛型为实体,绝大多字段都是null,这样做不优雅 * 用返回泛型为map建议使用 */ @Test public void selectByWrapperMaps() { QueryWrappe

  • Mybatis plus中使用in查询出错如何解决

    不想看我bb的直接点上面的 ''解决方法'' 我的情况是这样的,在使用mybatis plus提供的QueryWrapper方法里的in查询时,我的参数为类似"1,2,3,4"这样的字符串 //要查的参数 String masterIds = "81554,5654,55948,48945"; QueryWrapper<FpjyPauperInfo> pauperqw = new QueryWrapper<>(); pauperqw.in(&

  • mybatis-plus QueryWrapper自定义查询条件的实现

    mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等,附上官网链接https://mp.baomidou.com/,github上有代码例子,国内小伙伴推荐码云https://gitee.com/baomidou/mybatis-plus.  但是,其中还是有些小坑,文档也没有涉及的很全面,碰到问题,百度或者发issue,能力强的还是直接看源码好,一切答案都在源码中. 版本推荐用3.1.0,3.1.1及以上版本有bu

  • mybatis Plus 多表联合查询的实现示例

    本文主要介绍了mybatis Plus 多表联合查询,分享给大家,具体如下: //实体类package com.sk.skkill.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.D

  • mybatis plus的3种查询方式(小结)

    本文是基于springboot框架下的查询.  一:基本配置: 1.仓库依赖 <repositories> <repository> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>

  • MyBatis-Plus 如何实现连表查询的示例代码

    在项目开发中,难免会遇到连表查询的操作. 项目中用的是 MyBatis-Plus,是新使用的框架.官方文档看这里. 我写过一篇通过单元测试来验证 MyBatis-Plus 的 CRUD 操作.点这里跳转 今天遇到连表查询的问题,特此记录一下. 遇到需要连表操作,想起 MyBatis 的操作连表查询,要是 MyBatis-Plus 也像 MyBatis 一样,就脑壳痛了.(MyBatis-Plus 是 MyBatis 的增强版) 脑壳痛归脑壳痛,先动手干. 首先 因为官方的内置接口方法都是针对单表

  • MyBatis-Plus 查询指定字段的实现

    首先创建一个数据库表,如下图所示: 然后创建一个Spring Boot项目,pom.xml和配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema

  • C# DataTable中查询指定字段名称的数据

    1.查询后获取对应的数据集后,传递参数strcodeName,根据数据集中strcodeName的匹配对应字段,获取数据集中对应的目的字段 复制代码 代码如下: private string GetStrName(DataTable dtable, string strcodeName) {             string Name = strcodeName;             DataRow[] dr = dtable.Select("匹配对应字段=" + strcod

  • MySQL查询指定字段不是数字与逗号的sql

    核心sql语句 MySQL查询不包含数字的语句: SELECT * FROM test WHERE `name` regexp '[^0-9]'; MySQL查询纯数字的语句: SELECT * FROM test WHERE `name` regexp '[0-9]'; 相关文章id,都是数字或者逗号那么下面语句MySQL查询不包含数字与逗号的语句: SELECT * FROM test WHERE `name` regexp '[^0-9,]'; MySQL查询某一列中不是数字 包含数字的列

  • Mybatis Plus select 实现只查询部分字段

    目录 Mybatis Plus select 查询部分字段 select 设置查询字段 MyBatis-Plus之select.delete 一.Mybatis-Plus之查询操作 1.查询操作常用API 2.分页查询 二.Mybatis-Plus之删除操作 1.物理删除操作常用API 2.逻辑删除 Mybatis Plus select 查询部分字段 Mybatis Plus select语句默认查询所有字段,如需要指定字段查询,则需使用 QueryWrapper的select方法. sele

  • Mybatis-plus如何查询表中指定字段(不查询全部字段)

    目录 查询表中指定字段(不查询全部字段) 场景 解决 只查询部分字段的两种方法 方法1 方法2 查询表中指定字段(不查询全部字段) 场景 Mybatis-Plus中BaseMapper提供的方法默认查询的是数据库中表的所有字段,但是有时候,我们仅仅需要查询的是表的某个字段货主一些字段,查询全部的话数据量大时会出现效率问题,况且对于有强迫症的人简直是难以忍受!!! 解决 Mybatis-Plus中通过构建QueryWrapper来设置select方法指定需要查询的字段. 具体图片 只查询部分字段的

  • MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍MySQL数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下SQL语句中的select语句的语法: Select 语句的基本语法: Select <列的集合> from <表名> where <条件> order by <排序字段和方式> 如果要查询某个表中的指定列的所有数据,则查询语句可以写作: select 列名1,列名2,列名3... from <表名> 要说明一个,这个语句后面仍然可以使用wher

  • 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以. 使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型. 后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度.如字段 name char(5),若值为sgl,那么oracle会自动用空格补足长度,最终值为sgl. 一.解决方法: 方法1:先用trim()函数把值去掉两边空格再作为条件查询

  • Mybatis Plus查询时sql字段名大小写报错的解决

    目录 Mybatis Plus查询时sql字段名大小写报错 遇到报错 错误解析 解决方案 Mybatis Plus返回map大小写问题 Mybatis Plus查询时sql字段名大小写报错 遇到报错 错误解析 在数据库中没有找到img_url 列 数据库字段名是是大写 解决方案 在application.properties中加: mybatis-plus.configuration.map-underscore-to-camel-case=false 完美运行~ Mybatis Plus返回m

  • jpa实现只查询指定的字段

    目录 jpa查询指定的字段 下面是实例代码 spring data jpa查询自定义查询字段 jpa查询指定的字段 JpaRepository中new的方式产生新的对象,并配置好其构造函数 JPA对字段命名有一点规则,推荐使用驼峰式命名,如果下面的方法会报错,并且没有明确的报错信息,请先看字段是否合法!!!!! 下面是实例代码 JpaRepository: @Transactional public interface PayeeDataRepo extends JpaRepository<Pa

  • mybatis-plus指定字段模糊查询的实现方法

    mybatis-plus版本:3.3.0 oracle版本:11g 很常见的一个需求场景:某张表在前端显示时,查询条件中,往往name字段需要模糊查询,否则默认mybatis-plus是用的全字符匹配查询.如何最小限度地改造代码,实现某个字段模糊查询,其实mybatis-plus官方文档给出了答案: 通过@TableField注解地condition属性,可以配置某个字段,始终使用模糊匹配,打开condition类,去看看有哪些可选项: 一共有5个可选项,默认是采用第一个:EQUAL. 接下来改

随机推荐