Java中Mybatis-Plus使用方式介绍

 更新时间:2023年06月01日 11:31:28   作者:颜淡慕潇  
Mybatis-Plus提供了多种方式来执行SQL,包括使用注解、XML映射文件和 Lambda表达式等,其中,使用Lambda表达式是Mybatis-Plus推荐的方式,因为它更加直观和类型安全,,需要的朋友可以参考下

1 Mybatis-Plus简介

Mybatis-Plus 提供了多种方式来执行 SQL,包括使用注解、XML 映射文件和 Lambda 表达式等。其中,使用 Lambda 表达式是 Mybatis-Plus 推荐的方式,因为它更加直观和类型安全。

2 使用方法

1  Lambda 表达式执行 SQL

以下是一个使用 Lambda 表达式执行 SQL 的示例,现在我们有一个名为 User 的实体类,其中包含 idname 和 age 属性:

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public List<User> getUsersByName(String name) {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getName, name);
        return baseMapper.selectList(queryWrapper);
    }
}

在这个示例中,我创建了一个 LambdaQueryWrapper 对象,使用 eq 方法指定查询条件为 name = #{name},其中 #{name} 是参数占位符。

然后,调用 baseMapper.selectList 方法执行查询,并返回查询结果。

2 组合示例 

要传递参数,可以将参数作为方法的参数,并在查询条件中使用 eqneinlike 等方法指定参数值。

例如,假设要查询年龄大于等于 minAge,小于等于 maxAge 的用户,可以修改上面的示例代码如下:

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public List<User> getUsersByAge(int minAge, int maxAge) {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.ge(User::getAge, minAge).le(User::getAge, maxAge);
        return baseMapper.selectList(queryWrapper);
    }
}

在这个示例中,我添加了一个新的方法 getUsersByAge,其中两个参数 minAge 和 maxAge 分别表示最小年龄和最大年龄。

使用 ge 方法指定年龄大于等于 minAge,使用 le 方法指定年龄小于等于 maxAge。

然后,调用 baseMapper.selectList 方法执行查询,并返回查询结果。

3 复杂sql 

另外,如果需要执行复杂的 SQL,例如联合查询、分组查询等,可以使用 Mybatis-Plus 提供的 SQL 构建器,它可以帮助你构建复杂的 SQL 语句。

以下是一个使用 SQL 构建器执行联合查询的示例,假设你有一个名为 Order 的实体类,其中包含 id、userId 和 amount 属性,你需要查询每个用户的订单总金额:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
    @Override
    public List<Map<String, Object>> getOrderAmountByUser() {
        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("user_id", "sum(amount) as total_amount")
                    .groupBy("user_id");
        return baseMapper.selectMaps(queryWrapper);
    }
}

在这个示例中,我创建了一个 QueryWrapper 对象,使用 select 方法指定要查询的字段为 user_id 和 sum(amount) as total_amount,其中 sum(amount) 表示每个用户的订单总金额,as total_amount 是为结果集中的这个字段取别名。

然后,使用 groupBy 方法将结果按照 user_id 进行分组。

最后,调用 baseMapper.selectMaps 方法执行查询,并返回查询结果。

注意,在使用 SQL 构建器执行复杂的 SQL 语句时,需要使用正确的 SQL 语法,并且需要特别注意 SQL 注入的问题。

可以使用 Mybatis-Plus 提供的参数绑定方式来避免 SQL 注入问题,例如 #{param}${param} 等方式。

3 其他注入sql的方式

Mybatis-Plus 提供了多种注入 SQL 的方式,包括使用注解、XML 映射文件和 Lambda 表达式等。

不同的注入方式适用于不同的场景和需求,可以根据具体情况选择适合的方式。

以下是几种常用的注入 SQL 的方式:

1 使用注解

可以使用 @Select@Update@Delete@Insert 注解来注入 SQL 语句。例如:

@Select("SELECT * FROM user WHERE name = #{name}")
List<User> selectByName(@Param("name") String name);

在这个示例中,使用 @Select 注解注入了一条查询语句,其中 #{name} 表示参数占位符,@Param("name") 表示参数名称。

使用这种方式注入 SQL 语句比较简单,但是不够灵活,不支持复杂的 SQL 语句。

2 使用 XML 映射文件

可以使用 XML 映射文件来注入 SQL 语句,这种方式可以支持复杂的 SQL 语句,并且可以将 SQL 和 Java 代码分离。

例如:在 UserMapper.xml 文件中:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectByName" resultType="User">
        SELECT * FROM user WHERE name = #{name}
    </select>
</mapper>

在 UserMapper.java 文件中:

List<User> selectByName(@Param("name") String name);

在这个示例中,将查询语句写在 XML 映射文件中,使用 <select> 标签指定 SQL 语句,并使用 resultType 属性指定返回结果类型。然后,在 Java 代码中调用该方法即可。

以上就是Java之Mybatis-Plus使用方式介绍的详细内容,更多关于Java Mybatis-Plus使用方式的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot配置Druid数据监控代码实例

    SpringBoot配置Druid数据监控代码实例

    这篇文章主要介绍了SpringBoot配置Druid数据监控代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java中的时间日期API知识点总结

    Java中的时间日期API知识点总结

    本文给大家总结了Java中的时间日期API知识点以及相关的实例代码分享,有兴趣的朋友参考学习下。
    2018-04-04
  • Java复杂链表的复制详解

    Java复杂链表的复制详解

    复杂链表指的是一个链表有若干个结点,每个结点有一个数据域用于存放数据,还有两个指针域,其中一个指向下一个节点,还有一个随机指向当前复杂链表中的任意一个节点或者是一个空结点,我们来探究一下在Java中复杂链表的复制
    2022-01-01
  • Spring循环依赖正确性及Bean注入的顺序关系详解

    Spring循环依赖正确性及Bean注入的顺序关系详解

    这篇文章主要给大家介绍了关于Spring循环依赖的正确性,以及Bean注入的顺序关系的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • 轻松掌握java装饰者模式

    轻松掌握java装饰者模式

    这篇文章主要帮助大家轻松掌握java装饰者模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Java中的命名与目录接口JNDI基本操作方法概览

    Java中的命名与目录接口JNDI基本操作方法概览

    这篇文章主要介绍了Java中的命名与目录接口JNDI基本操作方法概览,JNDI提供统一的客户端API使得Java应用程序可以和这些命名服务和目录服务之间进行交互,需要的朋友可以参考下
    2016-03-03
  • Java  Object类中的常用API介绍

    Java  Object类中的常用API介绍

    这篇文章主要介绍了Java  Object类中的常用API介绍,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • Springboot迁移到Micronaut实现过程详解

    Springboot迁移到Micronaut实现过程详解

    这篇文章主要为大家 介绍了Springboot迁移到Micronaut实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • SpringBoot中事务失效的六个原因解析

    SpringBoot中事务失效的六个原因解析

    这篇文章主要介绍了SpringBoot中事务失效的六个原因解析,由于Spring的事务是基于AOP的方式结合动态代理来实现的,因此事务方法一定要是public的,这样才能便于被Spring做事务的代理和增强,需要的朋友可以参考下
    2023-10-10
  • Spring Boot RabbitMQ 延迟消息实现完整版示例

    Spring Boot RabbitMQ 延迟消息实现完整版示例

    本篇文章主要介绍了Spring Boot RabbitMQ 延迟消息实现完整版示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论