mybatis-plus如何实现查询传入参数Map,返回List<Map>方式
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍mybatis-plus如何实现查询传入参数Map,返回List方式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mybatis-plus 查询传入参数Map,
千家信息网最后更新 2025年11月07日mybatis-plus如何实现查询传入参数Map,返回List<Map>方式
这篇文章主要介绍mybatis-plus如何实现查询传入参数Map,返回List
mybatis-plus 查询传入参数Map,返回List
原因有时实体类属性不够用,又不想写自定义VO了,所以用map,这样直接返回前台用起来也很方便
1、mapper.xml
注意是resultType 不是resultMap 否则报错
2、mapper.java
List
3、service 组装查询条件
public List
mybatis-plus 基本使用
首先我们需要创建一个数据库表
用于演示MyBatis-Plus的基本用法。
CREATE TABLE `user` ( `id` varchar(32) NOT NULL, `username` varchar(32) DEFAULT '', `password` varchar(32) DEFAULT '', PRIMARY KEY (`id`));
然后创建一个Spring Boot项目
pom.xml和配置如下:
4.0.0 org.kaven mybatis-plus 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.3.4.RELEASE 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test org.springframework.boot spring-boot-starter-webflux com.baomidou mybatis-plus-boot-starter 3.4.0 mysql mysql-connector-java 5.1.49 org.projectlombok lombok org.springframework.boot spring-boot-maven-plugin
spring: application: name: mybatis-plus datasource: driver-class-name: com.mysql.jdbc.Driver username: root password: 123456 url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=falseserver: port: 8085 logging: level: root: warn com.kaven.mybatisplus.dao: trace pattern: console: '%p%m%n'
实体类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")@Datapublic class User { @TableId private String id; @TableField("username") private String username; @TableField("password") private String password; /** * 使用 @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;@Componentpublic interface UserMapper extends BaseMapper{}
UserMapper需要继承MyBatis-Plus的BaseMapper接口。
BaseMapper接口源码如下,其实就是定义了一些数据库表的CRUD方法。
package com.baomidou.mybatisplus.core.mapper;import com.baomidou.mybatisplus.core.conditions.Wrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import java.io.Serializable;import java.util.Collection;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.Param;public interface BaseMapperextends Mapper { int insert(T entity); int deleteById(Serializable id); int deleteByMap(@Param("cm") Map columnMap); int delete(@Param("ew") Wrapper wrapper); int deleteBatchIds(@Param("coll") Collection extends Serializable> idList); int updateById(@Param("et") T entity); int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper); T selectById(Serializable id); List selectBatchIds(@Param("coll") Collection extends Serializable> idList); List selectByMap(@Param("cm") Map columnMap); T selectOne(@Param("ew") Wrapper queryWrapper); Integer selectCount(@Param("ew") Wrapper queryWrapper); List selectList(@Param("ew") Wrapper queryWrapper); List
启动类:
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可以不用写Mapper.xml配置文件,是不是贼方便。
我们先在数据库中添加几行数据,方便演示。

我们来演示几个基本的查询方法
package com.kaven.mybatisplus.dao;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.HashMap;import java.util.List;import java.util.Map;@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperTest { @Autowired private UserMapper userMapper; @Test public void selectList(){ // 条件设置为null , 就是没有条件,即查询所有数据 List userList = userMapper.selectList(null); userList.forEach(System.out::println); } @Test public void selectById(){ // 根据Id查询 User user = userMapper.selectById("1"); System.out.println(user); } @Test public void selectBatchIds(){ // 根据Id列表进行批查询 List idList = Arrays.asList("1" , "2" , "3"); List userList = userMapper.selectBatchIds(idList); userList.forEach(System.out::println); } @Test public void selectByMap(){ // 根据<属性 , 值>来进行匹配查询 , 多个<属性 , 值>会通过and方式来查询 Map map = new HashMap<>(); // 这里是数据库的列名 , 而不是实体类的属性名 map.put("username" , "kaven"); map.put("password" , "kaven"); List userList = userMapper.selectByMap(map); userList.forEach(System.out::println); }} 运行结果:

再演示更新方法。
package com.kaven.mybatisplus.dao;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;@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperUpdateTest { @Autowired private UserMapper userMapper; @Test public void updateById(){ // 根据Id进行更新 User user = userMapper.selectById("1"); user.setPassword("itkaven"); int rows = userMapper.updateById(user); System.out.println(userMapper.selectById(user.getId())); }}其实还有一个update方法,但它需要一个条件,条件也可以设置为null,但这样会更新所有的数据,这里先不演示,之后的博客再进行演示说明,两个更新方法的定义如下。
/** * 根据 ID 修改 * * @param entity 实体对象 */ int updateById(@Param(Constants.ENTITY) T entity); /** * 根据 whereEntity 条件,更新记录 * * @param entity 实体对象 (set 条件值,可以为 null) * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句) */ int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) WrapperupdateWrapper);
再演示几个删除方法
package com.kaven.mybatisplus.dao;import org.junit.Assert;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 org.springframework.transaction.annotation.Transactional;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperDeleteTest { @Autowired private UserMapper userMapper; @Test @Transactional public void deleteById(){ // 根据Id进行删除 int rows = userMapper.deleteById("1"); Assert.assertEquals(rows , 1); } @Test @Transactional public void deleteByMap(){ // 根据<属性 , 值>进行匹配删除 Map map = new HashMap<>(); map.put("username" , "607"); map.put("password" , "607"); int rows = userMapper.deleteByMap(map); Assert.assertEquals(rows , 1); } @Test @Transactional public void deleteBatchIds(){ // 根据Id列表进行批删除 List idList = Arrays.asList("1" , "2" , "3"); int rows = userMapper.deleteBatchIds(idList); Assert.assertEquals(rows , 3); }} 结果如下:
这里也还有一个delete方法,也需要一个条件,所以也不进行演示了。
再演示插入方法
package com.kaven.mybatisplus.dao;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;@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperInsertTest { @Autowired private UserMapper userMapper; @Test public void insert(){ // 直接实体插入 User user = new User(); user.setId("4"); user.setUsername("hn"); user.setPassword("hn"); userMapper.insert(user); }}结果如下:
以上是"mybatis-plus如何实现查询传入参数Map,返回List
查询
数据
演示
方法
条件
实体
数据库
更新
参数
方式
对象
属性
接口
结果
内容
就是
篇文章
项目
配置
不够
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖北省信息网络安全协会招聘
crm软件开发管理
国内网络安全好的公司
创建数据库错误
大学软件开发设计
蔬菜生鲜分拣配送软件开发
网络安全方向要学什么语言
科跃网络技术有限公司
徐州艾特网络技术有限公司
H3C服务器怎么做镜像
软件开发费长期待摊费用
学校网络服务器管理人员
联想服务器登陆管理口
编程学到安卓软件开发要多久
计算机网络技术沈阳模拟题
ntp服务器搭建
计算机网络技术+第3版
u8数据导入数据库没有提供
大数据项目服务器资源
泰坦陨落2社区服务器
网络安全图画简单又好看
网络安全的十大方针
数据库技术发展史ppt
现在的教学软件开发有哪些
产品经理软件开发规划报告
徐州服务器机柜过滤器
怎么换手机网页服务器
山东dell服务器零售云主机
中国国家知识专利产权局数据库
服务器 安卓