likes
comments
collection
share

使用MyBatis-Plus进行查询,多条路多条选择😚

作者站长头像
站长
· 阅读数 41

前言

俗话说,条条大路通罗马(All Roads Lead to Rome)。表示在实现在做一件事情的时候,不只有一种方式,可以有很多种方式和途径来实现。

使用MyBatis-Plus进行查询,多条路多条选择😚

举例

在生活中有好多种例子, 比如,去上班的时候,可以开车,坐公交,坐地铁,骑自行车,离得近的可以步行,跑步...... 比如,去外面的吃饭的时候,可以选择吃面食,米饭,火锅 ...... 比如,出行的时候,可以选择飞机、高铁、火车,换乘 ...... 这种例子,还有很多,就不一一说明了😅。

回到主题

作为一个爱码士,在完成一个功能的时候,也会有多种方式进行选择,有时选择自己常用的方式,也会选择一些新颖的方式进行处理。

在对接接口的时候,比如一个获取列表的接口,该实体类中有多好字段,但是前端只需要其中的几个字段。这种情况下,我们一般会怎样处理呢?是直接返回整个实体类呢?还是说需要啥字段给返回啥字段呢?

具体的就要看场景如何,比如前后台的方便程度,交流程度,公司要求等等......

项目中,一直在使用 MyBatis-Plus作为项目持久层的开发。

使用MyBatis-Plus进行查询,多条路多条选择😚

下面,我们一块来看看,怎样通过MyBatis-Plus在实现查询过程中,查询出需要的字段,也可以理解成过滤一些不需要的字段。

具体实现

建表

表这块的话,还是我们一直喜欢使用的 user表,具体字段有:用户id(id)、名称(name)、电话(phone)、年龄(age)、地址(address)

CREATE TABLE `user` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `name` VARCHAR(64) DEFAULT NULL COMMENT '用户名称',
  `phone` VARCHAR(64) DEFAULT NULL COMMENT '用户电话',
  `age` INT DEFAULT NULL COMMENT '用户年龄',
  `address` VARCHAR(128) DEFAULT NULL COMMENT '用户地址',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='用户表';

表中填充数据

INSERT INTO `user` (`name`, `phone`, `age`, `address`) VALUES
('孙一', '13800138002', 27, '西安市雁塔区'),
('黄二', '13900139002', 31, '青岛市市南区'),
('张三', '13800138000', 30, '北京市海淀区'),
('李四', '13900139000', 25, '上海市浦东新区'),
('王五', '13600136000', 35, '广州市天河区'),
('赵六', '13700137000', 28, '深圳市南山区'),
('陈七', '13800138001', 22, '杭州市西湖区'),
('周八', '13900139001', 32, '南京市鼓楼区'),
('吴九', '13600136001', 40, '成都市武侯区'),
('郑十', '13700137001', 33, '武汉市江汉区');

先看下,一般我们直接在工具中查询所有用户的名称和电话的sql

SELECT `name`,`phone` FROM `user` 

使用MyBatis-Plus进行查询,多条路多条选择😚

代码实现方式

方式一,使用 mapper.xml 编写SQL方式进行实现

<!-- 在mapper的XML文件中 -->
<mapper namespace="com.example.mapper.UserMapper">
   <select id="selectUser" resultType="com.example.entity.User">
        SELECT `name`,`phone` FROM `user` 
   </select>
</mapper>

方式二,使用 @Select 注解

// Mapper接口
public interface UserMapper extends BaseMapper<User> {
    @Select("SELECT `name`,`phone` FROM user")
    List<Map<String,Object>> selectUser();
}

方式三,使用 LambdaQueryWrapper 创建查询实例进行实现(直接查询需要的)

// 创建User查询LambdaQueryWrapper实例
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
// 只查询用户的名称、电话
queryWrapper.select(User::getName, User::getPhone);
// 进行查询
List<Map<String,Object>> users = userMapper.selectMaps(queryWrapper);

方式四,使用 LambdaQueryWrapper 创建查询实例进行实现(过滤不需要的)

// 创建User查询LambdaQueryWrapper实例
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
// 过滤掉用户的id、年龄、地址
lambdaQueryWrapper.select(User.class, x -> !x.getColumn().equals("id")
                && !x.getColumn().equals("age")
                && !x.getColumn().equals("address"))
// 进行查询
List<Map<String,Object>> users = userMapper.selectMaps(queryWrapper);

使用总结

使用 LambdaQueryWrapper 这种方式进行查询是不是很方便,避免了编写Sql的麻烦性。可以具体使用在:当少字段的时候查询几个的时候可以使用方式三,当多字段不查询其中几个的时候可以使用方式四。

具体在工作使用的话,还需要看个人选择,喜欢哪种方式就用哪种,在工作中也要使自己开心起来,毕竟自己开心才是真的开心!!!😂

在技术这个层面来说,还是要继续研究、学习,从而进行运用。

寻求不同的解决法方式用在合适的地方,这个也很重要!!!

感悟

使用MyBatis-Plus进行查询,多条路多条选择😚

工作如此, 生活如此,人生亦如此!!!

在人生道路中,有太多的选择,高中时候选择理科还是文科,高中毕业之后是打工还是上学,大学毕业之后是继续读研还是找工作,找工作是找离家近的城市还是发展好的城市 ......

每个人都有自己的生活,都有自己的选择,选择适合自己的生活是值得摸索的,也是需要坚持找下去的!

人生道路很漫长,在人生道路中处处有美好的风景,走一走看一看,也是很不错的呦!!!

使用MyBatis-Plus进行查询,多条路多条选择😚
转载自:https://juejin.cn/post/7393311009760526355
评论
请登录