MyBatis实现动态SQL更新

发布网友 发布时间:2024-09-27 06:21

我来回答

1个回答

热心网友 时间:2024-10-04 23:17

博主记得在一个周五快下班的下午,产品找到我说有几个业务列表查询需要加上时间条件过滤数据,这个条件可能会变,不保证以后不修改,这个改动涉及到多个列表查询,于是博主思考了一会想了几种实现方案,

考虑到机制不需要修改过多代码,因此本文博主将带领大家学习如何利用 MyBatis 机制来优雅的实现这个需求。

本文示例代码全部在 Spring Boot3.0、Mybatis Plus3.5.3.1 版本下运行。

MyBatis 是一个流行的 Java 持久层框架,它提供了灵活的 SQL 映射和执行功能。有时候我们可能需要在运行时动态地修改 SQL 语句,例如添加一些条件、排序、分页等。MyBatis 提供了一个强大的机制来实现这个需求,那就是(Interceptor)。

推荐博主开源的 H5 商城项目waynboot-mall,这是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城前台和服务端接口。实现了商城所需的首页展示、商品分类、商品详情、商品 sku、分词搜索、购物车、结算下单、支付宝/微信支付、收单评论以及完善的后台管理等一系列功能。 技术上基于最新得 Springboot3.0、jdk17,整合了 MySql、Redis、RabbitMQ、ElasticSearch 等常用中间件。分模块设计、简洁易维护,欢迎大家点个 star、关注博主。 github 地址: github.com/wayn111/wayn...

是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。MyBatis 定义了四种类型的,分别是:

Spring Boot 项目中集成了 Mybatis Plus 后要让生效很简单,Mybatis Plus 的自动配置类会读取项目中所有注册到 Spring 容器的并进行自动注册。如下图,

所以我们只需要定义一个 DynamicSqlInterceptor 并加上 @Component 注解就行,代码如下,

指定 xml 文件中需要替换的占位符标识:@dynamicSql 以及待替换日期条件。

在需要进行 SQL 占位符替换的方法上加 @DynamicSql 注解。

将日期条件改成占位符where create_time > @dynamicSql。

现在我们对核心代码逻辑进行讲解:

执行结果:

到此本文讲解的 MyBatis 实现动态 SQL 内容就讲解完毕了,希望大家喜欢。

关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!

热心网友 时间:2024-10-04 23:23

博主记得在一个周五快下班的下午,产品找到我说有几个业务列表查询需要加上时间条件过滤数据,这个条件可能会变,不保证以后不修改,这个改动涉及到多个列表查询,于是博主思考了一会想了几种实现方案,

考虑到机制不需要修改过多代码,因此本文博主将带领大家学习如何利用 MyBatis 机制来优雅的实现这个需求。

本文示例代码全部在 Spring Boot3.0、Mybatis Plus3.5.3.1 版本下运行。

MyBatis 是一个流行的 Java 持久层框架,它提供了灵活的 SQL 映射和执行功能。有时候我们可能需要在运行时动态地修改 SQL 语句,例如添加一些条件、排序、分页等。MyBatis 提供了一个强大的机制来实现这个需求,那就是(Interceptor)。

推荐博主开源的 H5 商城项目waynboot-mall,这是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城前台和服务端接口。实现了商城所需的首页展示、商品分类、商品详情、商品 sku、分词搜索、购物车、结算下单、支付宝/微信支付、收单评论以及完善的后台管理等一系列功能。 技术上基于最新得 Springboot3.0、jdk17,整合了 MySql、Redis、RabbitMQ、ElasticSearch 等常用中间件。分模块设计、简洁易维护,欢迎大家点个 star、关注博主。 github 地址: github.com/wayn111/wayn...

是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。MyBatis 定义了四种类型的,分别是:

Spring Boot 项目中集成了 Mybatis Plus 后要让生效很简单,Mybatis Plus 的自动配置类会读取项目中所有注册到 Spring 容器的并进行自动注册。如下图,

所以我们只需要定义一个 DynamicSqlInterceptor 并加上 @Component 注解就行,代码如下,

指定 xml 文件中需要替换的占位符标识:@dynamicSql 以及待替换日期条件。

在需要进行 SQL 占位符替换的方法上加 @DynamicSql 注解。

将日期条件改成占位符where create_time > @dynamicSql。

现在我们对核心代码逻辑进行讲解:

执行结果:

到此本文讲解的 MyBatis 实现动态 SQL 内容就讲解完毕了,希望大家喜欢。

关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com