mybatis-plus|mybatis-plus 查询传入参数Map,返回List方式 2021-12-20 返回List方式 目录 mybatis-plus 查询传入参数Map,返回List 1、mapper.xml 2、mapper.java 3、service 组装查询条件 mybatis-plus 基本使用 首先我们需要创建一个数据库表 然后创建一个Spring Boot项目 我们来演示几个基本的查询方法 再演示几个删除方法 再演示插入方法 mybatis-plus 查询传入参数Map,返回List 原因有时实体类属性不够用,又不想写自定义VO了,所以用map,这样直接返回前台用起来也很方便 1、mapper.xml 注意是resultType 不是resultMap 否则报错 SELECT * FROMorder and order_id = #{orderId} 2、mapper.java List getOrder(Map map); 3、service 组装查询条件 public List getOrder(String storeId) {Map map=new HashMap(); map.put("orderId",orderId); return storeApiOrderMapper.getOrder(map); } 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项目 【mybatis-plus|mybatis-plus 查询传入参数Map,返回List方式】pom.xml和配置如下: 4.0.0org.kavenmybatis-plus1.0-SNAPSHOTorg.springframework.bootspring-boot-starter-parent2.3.4.RELEASE1.8org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-starter-testorg.springframework.bootspring-boot-starter-webfluxcom.baomidoumybatis-plus-boot-starter3.4.0mysqlmysql-connector-java5.1.49org.projectlomboklombokorg.springframework.bootspring-boot-maven-plugin spring:application:name: mybatis-plusdatasource:driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=falseserver:port: 8085logging:level:root: warncom.kaven.mybatisplus.dao: tracepattern: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 {@TableIdprivate 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 BaseMapper extends 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 selectMaps(@Param("ew") Wrapper queryWrapper); List selectObjs(@Param("ew") Wrapper queryWrapper); > E selectPage(E page, @Param("ew") Wrapper queryWrapper); > E selectMapsPage(E page, @Param("ew") Wrapper queryWrapper); } 启动类: 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 {@Autowiredprivate UserMapper userMapper; @Testpublic void selectList(){// 条件设置为null , 就是没有条件,即查询所有数据List userList = userMapper.selectList(null); userList.forEach(System.out::println); }@Testpublic void selectById(){// 根据Id查询User user = userMapper.selectById("1"); System.out.println(user); }@Testpublic void selectBatchIds(){// 根据Id列表进行批查询List idList = Arrays.asList("1" , "2" , "3"); List userList = userMapper.selectBatchIds(idList); userList.forEach(System.out::println); }@Testpublic 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 {@Autowiredprivate UserMapper userMapper; @Testpublic 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) Wrapper updateWrapper); 再演示几个删除方法 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 {@Autowiredprivate UserMapper userMapper; @Test@Transactionalpublic void deleteById(){// 根据Id进行删除int rows = userMapper.deleteById("1"); Assert.assertEquals(rows , 1); }@Test@Transactionalpublic void deleteByMap(){// 根据<属性 , 值>进行匹配删除Map map = new HashMap<>(); map.put("username" , "607"); map.put("password" , "607"); int rows = userMapper.deleteByMap(map); Assert.assertEquals(rows , 1); }@Test@Transactionalpublic 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 {@Autowiredprivate UserMapper userMapper; @Testpublic void insert(){// 直接实体插入User user = new User(); user.setId("4"); user.setUsername("hn"); user.setPassword("hn"); userMapper.insert(user); }} 结果如下: 文章图片 这就是MyBatis-Plus的基本使用了。 以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 推荐阅读 膝盖中箭体是什么意思:直到我膝盖中了一箭 表转折 动车和高铁有什么区别 格式转换器下载免费版 公主连结类龙生物 公主连接类龙生物VH一刀自动Auto攻略 商标代码查询 商标信息怎么查询,标库网查询商标 win10系统怎么转区 WIN10系统转区的操作教程 临近结婚,没有答应未婚妻要求,转身跟了同事,幸运还是不幸? 哪些水果不能上供用 沃柑能上供吗 这鲢鳙饵料配方真好用 钓鲢鱼饵料 广西桂林书画家有那些 hbase日志文件如何分析,如何查看hbase的日志文件 iPhone13|苹果优先生产iPhone13,iPad交货最长达63天 鉴定完毕是什么意思 qq音乐怎么k歌,全民k歌app下载 朋友搬家乔迁送什么盆栽植物? 解决办法|用5张失败的照片举例:爱拍照和会拍照的人,究竟差距在哪? 蝗虫的气门在身体的哪个部位 4月20日 怎样才能保持乐观的心情? 预防白蚁飞进屋的方法 家里有白蚁预兆什么