`

142. Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一:<script>

阅读更多

 

 

【本篇博客,有配套视频,视频地址:《Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一script,公众号中点击下面的阅读原文,视频中讲解的更详细】

需求缘起:

网友1:这样如果是不定条件查询怎么解决呢?也就是xml中可以用if标签,注解怎么搞呢?

网友2:这动态sql用注解的方式不太方便吧!博主有好方法,请推出参照一下,一直没用注解的原因,就是动态sql没有好的方式,包括when foreach!针对简单的查询还是可以的!

       看到网友这么积极的提问,博主甚是很欣慰,有问题,就研究破破来着。

 

需求场景:

       在一个表中有id,name,email我们查询的时候,希望name不为null的时候,作为查询条件,如果email不为null的时候,作为查询条件。

 

实现过程:

1name,email and 关系

       如果nameemail只是并且的关系的话,那么我们会这么写:


@Select("Select * from Demo where name =#{name}  and email=#{email} ")

public List<Demo> select3(Demo demo);

       其中Demo类如下:

public class Demo {
    private int id;
    private String name;
    private String email;
    private Date updateTime;
    private SexEnum sexEnum;
    //省略getter and setter…
}

 

       表中的数据:

2     王五       aa@qq.com
3     王五       aa@qq.com
4     王五2    bb@qq.com
5     王五6    cc@qq.com

 

       这时候访问:

http://127.0.0.1:8080/select3?name=王五&email=aa@qq.com 能返回数据。

但是现在我们的需求不是这样的了。

 

2if name !=null ,if email != null

       现在我们希望的是如果name不为null的话,那么就当做条件,否则就不要当做条件;如果email不为null,那么就当做条件,否则不当做条件。

       那么方案一:so eay,只需要在前面加入<script>就可以使用<if test>标签了,代码如下:

@Select("<script> " +
            "SELECT * " +
            "from Demo " +
            " <where> " +
            "  1=1" +
            " <if test=\"name != null\">and name=#{name}</if> " +
            " <if test=\"email != null\"> and email=#{email}</if> " +
            " </where> " +
            " </script> ")
    public List<Demo> select4(Demo demo);

 

访问1http://127.0.0.1:8080/select4会返回全部数据,动态SQL是:

SELECT * from Demo WHERE 1=1

 

访问2http://127.0.0.1:8080/select4?name=王五 会返回name=王五的数据,动态SQL是:

SELECT * from Demo WHERE 1=1 and name=?

 

访问3http://127.0.0.1:8080/select4?name=王五&email=aa@qq.com会返回name=王五并且email=aa@qq.com的数据,动态SQL是:

SELECT * from Demo WHERE 1=1 and name=? and email=?

  

       是不是很酷,完美解决问题。但是后头看代码这样的代码可读性差,修改的时候也很麻烦,所以呢,是否有更好的方案呢?下篇博客揭晓,广告时刻,大家不要离开。

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

分享到:
评论

相关推荐

    spring-boot-starter-mybatis-spring-boot-1.0.2.zip

    总之,"spring-boot-starter-mybatis-spring-boot-1.0.2.zip"压缩包提供了一个方便的Spring Boot与MyBatis集成方案,通过简单的步骤,我们可以在Spring Boot应用中便捷地使用MyBatis进行数据库操作。这个版本适用于...

    spring-boot-starter-mybatis-spring-boot-1.3.3.tar.gz

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-mybatis&lt;/artifactId&gt; &lt;version&gt;1.3.3&lt;/version&gt; &lt;!-- 根据实际需要选择版本号 --&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ``` 2. **...

    spring-boot-starter-mybatis-spring-boot-2.3.0.tar.gz

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.3.0&lt;/version&gt; &lt;/dependency&gt; ``` 2. 配置数据源 Spring Boot会自动配置数据源,只需在`...

    spring-boot-starter-mybatis-spring-boot-2.1.2.zip

    `spring-boot-starter-mybatis`是Spring Boot为MyBatis提供的一站式解决方案,它包含MyBatis核心库、MyBatis-Spring以及相关的依赖,使得开发者无需手动管理这些依赖,只需简单配置即可实现MyBatis的集成。...

    spring-boot-starter-mybatis-spring-boot-2.2.2.zip

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.2.2&lt;/version&gt; &lt;/dependency&gt; ``` 这里特别注意的是,版本号应与标题中的`spring-boot-starter-...

    spring-boot-starter-mybatis-spring-boot-1.3.1.zip

    总结起来,`spring-boot-starter-mybatis-spring-boot-1.3.1`提供了方便的集成方案,使得Spring Boot项目能无缝对接MyBatis,极大地提高了开发效率。在实际项目中,根据具体需求对配置进行微调,就可以轻松实现数据...

    spring-boot-starter-mybatis-spring-boot-1.3.4.tar.gz

    "spring-boot-starter-mybatis"是Spring Boot官方提供的一个起步依赖,它包含了MyBatis的核心库、Spring的MyBatis支持以及MyBatis-Spring的依赖。在1.3.4版本中,这些组件已经配置好,开发者只需通过Maven或Gradle...

    spring-boot-starter-mybatis-spring-boot-2.1.0.tar.gz

    在实际开发中,Spring Boot与MyBatis的整合还可以涉及到更多高级特性的使用,例如MyBatis的动态SQL、缓存、结果映射等。同时,Spring Boot还提供了对事务的自动管理,使得在多数据源环境下也能轻松处理事务。总的来...

    spring-boot-starter-mybatis-spring-boot-2.3.1.tar.gz

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.3.1&lt;/version&gt; &lt;/dependency&gt; ``` 2. 配置数据源:Spring Boot通过`application.properties`或`...

    spring-boot-starter-mybatis-spring-boot-1.1.1.tar.gz

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;1.1.1&lt;/version&gt; &lt;/dependency&gt; ``` 对于Gradle用户,对应的配置如下: ```groovy dependencies ...

    spring-boot-starter-mybatis-spring-boot-2.3.0.zip

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;!-- 请确保版本与Spring Boot相匹配 --&gt; &lt;/dependency&gt; ``` 这里我们使用的是`...

    spring-boot-starter-mybatis-spring-boot-1.3.1.tar.gz

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;1.1.1&lt;/version&gt; &lt;!-- 对应Spring Boot 1.3.1版本的MyBatis Starter --&gt; &lt;/dependency&gt; ``` 2. ...

    spring-boot-starter-mybatis-spring-boot-3.0.0.zip

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;3.0.0&lt;/version&gt; &lt;/dependency&gt; ``` 2. 配置数据库连接:在`application.properties`或`...

    spring-boot-starter-mybatis-spring-boot-1.3.4.zip

    `spring-boot-starter-mybatis`是Spring Boot为MyBatis提供的一个starter,它包含了MyBatis、MyBatis-Spring、以及相关的依赖,使得开发者可以方便地在Spring Boot项目中使用MyBatis。在`pom.xml`或`build.gradle`...

    spring-boot-starter-mybatis-spring-boot-2.1.4.zip

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.1.4&lt;/version&gt; &lt;/dependency&gt; ``` 2. **配置数据源**:Spring Boot通过自动配置可以自动识别...

    spring-boot-starter-mybatis-spring-boot-1.3.5.tar.gz

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;1.3.5&lt;/version&gt; &lt;/dependency&gt; ``` 接着,配置MyBatis的相关属性,例如数据源、事务管理器等,...

    spring-boot-starter-mybatis-spring-boot-1.2.0.zip

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;1.2.0&lt;/version&gt; &lt;/dependency&gt; ``` 描述中提到的"windows 版本"通常指的是这些资源可以在Windows...

    spring-boot-mybatis-mysql.zip

    &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;版本号&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-...

    spring boot - mybatis

    Spring Boot简化了Spring应用程序的初始设置和配置,而MyBatis则是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了更灵活的数据访问方式。下面,我们将深入讲解这两个技术的结合及其关键知识点。 1. **...

    spring-boot-starter-mybatis-spring-boot-2.1.3.tar.gz

    &lt;artifactId&gt;spring-boot-starter-mybatis&lt;/artifactId&gt; &lt;/dependency&gt; ``` 2. 配置数据源:在`application.properties`或`application.yml`中设置数据库连接信息,例如: ```properties spring.datasource....

Global site tag (gtag.js) - Google Analytics