lectlist查询部分字段,会返回所有的,没查询的值为null
lectmaps 只会返回你查询的。
首先创建一个数据库表,如下图所示:
然后创建一个spring boot项目,pom.xml和配置如下:
<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="/d/file/titlepic/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.relea</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 urname: root password: itkaven@123 url: jdbc:mysql://127.0.0.1:3306/test?characterencoding=utf-8&ussl=falrver: port: 8085logging: level: root: warn com.kaven.mybatisplus.dao: trace pattern: console: '%p%m%n'mybatis-plus: mapper-locations: classpath:mappers/*.xml
实体类ur:
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("ur")@datapublic class ur { @tableid private string id; @tablefield("urname") private string urname; @tablefield("password") private string password; @tablefield("age") private integer age; /** * 使用 @tablefield(exist = fal) ,表示该字段在数据库中不存在 ,所以不会插入数据库中 * 使用 transient 、 static 修饰属性也不会插入数据库中 */ @tablefield(exist = fal) private string phone;}
mapper接口urmapper:
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.mapper.bamapper;import com.kaven.mybatisplus.entity.ur;import org.springframework.stereotype.component;@componentpublic interface urmapper extends bamapper<ur> {}
启动类:
package com.kaven.mybatisplus;import org.mybatis.spring.annotation.mapperscan;import org.springframework.boot.springapplication;import org.springframework.boot.autoconfigure.springbootapplication;@springbootapplication@mapperscan(bapackages = "com.kaven.mybatisplus.dao")public class apprun { public static void main(string[] args) { springapplication.run(apprun.class , args); }}
@mapperscan(bapackages = “com.kaven.mybatisplus.dao”)这个一定要加上。
我们先在数据库中添加几行数据,方便演示。
来看一下源码:
/** * 根据 wrapper 条件,查询全部记录 * * @param querywrapper 实体对象封装操作类(可以为 null) */ list<map<string, object>> lectmaps(@param(constants.wrapper) wrapper<t> querywrapper);
方法返回list<map<string, object>>类型的值,它的应用场景就是当我们只需要对象的一小部分属性或者对象没有的属性时,这种方法就显得很有用了。
我们先不使用lectmaps来实现一下只需要对象的一部分属性。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmappermapstest { @autowired private urmapper urmapper; @test public void lectlist(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.lect(ur.class , e -> !e.getcolumn().equals("password")).lt("age" , 50); list<ur> urlist = urmapper.lectlist(urquerywrapper); urlist.foreach(system.out::println); }}
结果如下:
结果虽然是正确的,但输出的ur数据中有为null的属性,当不需要的属性比较多时,这种方法就不太好。
使用lectmaps来实现一下只需要对象的一部分属性。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.s古典文学名著pringframework.test.context.junit4.springrunner;import java.util.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmappermapstest { @autowired private urmapper urmapper; @test public void lectmaps(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.lect(ur.class , e -> !e.getcolu奥运会美国vs西班牙mn().equals("password")).lt("age" , 50); list<map<string , object>> maplist = urmapper.lectmaps(urquerywrapper); maplist.foreach(system.out::printl设计行业n); }}
结果如下:
结果也是正确的,并且没有那些为null的属性值。
再来演示一下lectmaps怎么返回给我们实体类中不存在的属性。
以age进行分组,并且每组age和要小于60,输出平均age、最大age、最小age。
这个例子可能不太好,但能体现出lectmaps的方便之处,因为平均age、最大age、最小age是ur实体类中没有的属性。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmappermapstest { @autowired private urmapper urmapper; @test public void lectmaps2(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.lect("avg(age) avg_age" , "min(age) min_age" , "max(age) max_age") .groupby("age") .having("sum(age) < {0}" , 60); list<map<string , object>> maplist = urmapper.lectmaps(urquerywrapper); maplist.foreach(system.out::println); }}
结果如下:
结果是正确的,可以看一下输出的sql语句。
看一下源码:
/** * 根据 wrapper 条件,查询全部记录 * <p>注意: 只返回第一个字段的值</p> * * @param querywrapper 实体对象封装操作类(可以为 null) */ list<o高一作文题目bject> lectobjs(@param(constants.wrapper) wrapper<t> querywrapper);
从源码的注释中可以看到注意: 只返回第一个字段的值这句话,我们来演示一下该方法就能明白这句话了。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmapperothertest { @autowired private urmapper urmapper; @test public void lectobjs(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.lect("urname" , "age").likeright("urname","k").le("age" , 30); list<object> objectlist = urmapper.lectobjs(urquerywrapper); objectlist.foreach(system.out::println); }}
结果如下:
很显然,结果是正确的,并且只返回了urname。
看一下源码:
/** * 根据 wrapper 条件,查询总记录数 * * @param querywrapper 实体对象封装操作类(可以为 null) */ integer lectcount(@param(constants.wrapper) wrapper<t> querywrapper);
该方法其实就是返回符合条件的记录数。
我们来演示一下。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmapperothertest { @autowired private urmapper urmapper; @test public void lectcount(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.likeright("urname","k").le("age" , 30); integer count = urmapper.lectcount(urquerywrapper); system.out.println(count); }}
结果如下:
结果也是正确的。
也来看一下源码:
/** * 根据 entity 条件,查询一条记录 * * @param querywrapper 实体对象封装操作类(可以为 null) */ t lectone(@param(constants.wrapper) wrapper<t> querywrapper);
这个方法会返回一个实体,所以,如果有多条数据匹配的话,就会报错。
我们来演示一下报错的情况。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmapperothertest { @autowired private urmapper urmapper; @test public void lectoneerror(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.like("urname","k"); ur ur = urmapper.lectone(urquerywrapper); system.out.printl部编版四年级下册语文电子课本n(ur); }}
报错如下:
再来演示一下正确的情况。
package com.kaven.mybatisplus.dao;import com.baomidou.mybatisplus.core.conditions.query.querywrapper;import com.baomidou.mybatisplus.core.toolkit.wrappers;import com.kaven.mybatisplus.entity.ur;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.hashmap;import java.util.list;import java.util.map;@runwith(springrunner.class)@springboottestpublic class urmapperothertest { @autowired private urmapper urmapper; @test public void lectone(){ querywrapper<ur> urquerywrapper = wrappers.query(); urquerywrapper.like("urname","kaven"); ur ur = urmapper.lectone(urquerywrapper); system.out.println(ur); }}
结果如下:
结果是正确的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 04:15:54,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/73e8149f6b36f45e116a3af31dac02ca.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:mybaties plus selectMaps和selectList的区别说明.doc
本文 PDF 下载地址:mybaties plus selectMaps和selectList的区别说明.pdf
留言与评论(共有 0 条评论) |