mybatis-plus-利用条件构造器自定义SQL

一、介绍

LambdaQueryWrapper避免了QueryWrapper的硬编码问题

@SpringBootTest
class MybatisPlusTestApplicationTests {

    @Autowired
    private TestService testService;

    @Test
    void test01() {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper();
        lambdaQueryWrapper
                .ge(User::getAge, 20)
                .or(i -> i.eq(User::getName, "lxm").eq(User::getAge, 10));
        List<User> userList = testService.list(lambdaQueryWrapper);
        userList.forEach(System.out::println);
    }

    @Test
    void test02(){
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        //eq的第一个参数为硬编码	
        queryWrapper.eq("age", 20);
        List<User> userList = testService.list(queryWrapper);
        userList.forEach(System.out::println);
    }

}

二、使用

数据库表结构及数据
在这里插入图片描述

(1)实体类

@Data
@TableName("t_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
}

(2)根据通用Service和通用Mapper创建对应的Service和Mapper

@Mapper
public interface TestMapper extends BaseMapper<User> {

    List<User> selectAllUser(@Param(Constants.WRAPPER) Wrapper wrapper);
}
public interface TestService extends IService<User> {

    List<User> getUserList(Wrapper wrapper);
}
@Service
public class TestServiceImpl extends ServiceImpl<TestMapper, User> implements TestService {

    @Autowired
    private TestMapper testMapper;

    @Override
    public List<User> getUserList(Wrapper wrapper) {
        return testMapper.selectAllUser(wrapper);
    }
}

(3)编写Mapper的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.wsh.mybatisplustest.mapper.TestMapper">

    <select id="selectAllUser" resultType="user">
        select *
        from t_user
        ${ew.customSqlSegment}
    </select>
</mapper>

(4)运行

@SpringBootTest
class MybatisPlusTestApplicationTests {

    @Autowired
    private TestService testService;

    @Test
    void contextLoads() {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper();
        lambdaQueryWrapper
                .ge(User::getAge, 20)3
                //嵌套or
                .or(i -> i.eq(User::getName, "lxm").eq(User::getAge, 10));
        List<User> userList = testService.getUserList(lambdaQueryWrapper);
        userList.forEach(System.out::println);
    }

}

(5)日志输出

==>  Preparing: select * from t_user WHERE (age >= ? OR (name = ? AND age = ?))
==> Parameters: 20(Integer), lxm(String), 10(Integer)
<==    Columns: id, name, age
<==        Row: 1, wsh, 21
<==        Row: 2, tqs, 22
<==        Row: 3, lxm, 10
<==      Total: 3
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@12d1f1d4]
User(id=1, name=wsh, age=21)
User(id=2, name=tqs, age=22)
User(id=3, name=lxm, age=10)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用原生的Mybatis编写持久层逻辑时,所需要的代码是比较繁琐的,需要定义Mapper接口和Mapper.xml文件,每一个方法都需要编写对应的sql语句,会存在很多大量的重复工作,使用MP之后,对通用的方法做了高度的抽取,避免了很多重复工作,可以非常快速的实现了单表的各种增、删、改、查操作。除此之外,MP还提供了其他的高级功能,如:枚举、插件、ActiveRecord、SQL注入等。 本课程全面讲解了Mybatis-Plus框架的使用,从快速入门到原理分析再到插件的应用。每一个知识点都有案例进行演示学习,最终通过学习你将全面掌握MP的使用,从而使Mybatis的的开发更加的高效,达到事半功倍的效果。 适应人群 有一定的Java以及Mybatis框架的基础。 从0开始全面讲解Mybatis-Plus框架 l 快速入门 n Mybatis + MP 整合 n Spring + Mybatis + MP 整合 n SpringBoot + Mybatis + MP 整合 n 通用CRUD的全面讲解 n 配置 l 高级用法 n 条件构造器 n Oracle 主键Sequence n 通用枚举n ActiveRecord n 逻辑删除 l 插件 n 执行分析插件 n 性能分析插件 n 乐观锁插件 主讲内容 章节一:快速入门 1. Mybatis-Plus简介 2. 快速入门 3. 通用CRUD 4. 配置 5. 条件构造器 章节二:进阶 1. ActiveRecord 2. Oracle 主键Sequence 3. 插件 章节三:高级应用 1. Sql 注入器 2. 自动填充功能 3. 逻辑删除 4. 通用枚举 5. 代码生成器 6. MybatisX 快速开发插件
Mybatis-plusMyBatis增强工具包,用于简化CRUD操作。该工具包为MyBatis提供了一些高效,有用,即用的功能,使用它可以有效地节省您的开发时间。 Mybatis-plus特征: 与MyBatis完全兼容 启动时自动配置 开箱即用的用于操作数据库的界面 强大而灵活的条件包装器 生成主键的多种策略 Lambda样式的API 全能和高度可定制的代码生成器 自动分页操作 SQL注入防御 支持活动记录 支持可插拔的自定义界面 内置许多有用的扩展 Mybatis-plus功能: 1、单表CURD(简单 + 批量)操作,自动完成(支持 like 比较等查询)。 2、分页插件,Count查询自动或自定义SQL查询。 3、Spring根据不同环境加载不同配置支持(支持typeAliasesPackage通配符扫描)。 【自动生成Entity  Mapper  Service文件】 Mybatis-plus更新日志: v3.4.3 增加瀚高数据库支持 增加注解 Order By 支持默认排序 Wrapper exists notExists orderBy groupBy 支持参数绑定 Wrapper 支持 setParamAlias 其它优化 优化 KeyGenerator 支持多实现多数据源注入 增强 ServiceImpl 泛型推断,解决多继承与代理问题 新增 PageDto 用于微服务对象传输序列化 新增 Page 提供静态 of 构造方式 增加代理 MethodHandleProxies 对 lambda 调试支持 调整 ActiveRecord 日志对象初始化 调整 ActiveRecord 模式 Model 类开发 pkVal 方法外部可用 删除标记过时代码 优化枚举值获取方式 分页 count 安全处理 Sequence 方法支持重写支持 升级 Mybatis 3.5.7 修复自动配置 lazy-initialization 无属性提示 修复 mysql on duplicate key update 字段名判断为表名问题 修复 lambda 条件 npe 异常 重构 lambda 信息提取方法 获取 lambda 信息不在序列化 合并 gitee pulls/ 141 fixed github issues/3208 3016 fixed github issues/3482 数据权限处理器支持 union all 调整事务未启用打印提示信息 单元测试优化相关依赖升级

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值