`

mybatis 注解动态sql

阅读更多
之前学习的mybatis都是采用xml方式进行sql的解析。
最近看了下使用annotation的方式进行数据库sql语句封装。
这里记录下使用annotation的方式使用动态sql。
基本来说他有两种方案进行封装。
第一种方式:采用select的方式,使用<script>进行拼接。
第二种方式:使用SelectProvider,然后在另外的方法中返回sql语句。然后进行。
一下是两种方案的操作:
代码简单,实现功能为:如果传入的用户有name,那么sql语句加入name like "%xxx%"
第一种方法:
    @Select("<script>select * from t_user" +
            "<where>" +
            "<if test='#{name} != null'>name like concat('%',#{name},'%')</if>" +
            "</where>" +
            "</script>")
    List<User> DynaSQL2(User u);



第二种方法:
    @SelectProvider(type = com.duduli.li.sql.DynamicsSQL.class,method = "getLoginSQL")
    List<User> DynaSQL(User u);

sql拼接方法:
package com.duduli.li.sql;

import com.duduli.li.domain.User;
import org.apache.ibatis.jdbc.SQL;

public class DynamicsSQL {
    public String getLoginSQL(User u){
        SQL sql = new SQL();
        String name = u.getName();

        sql.SELECT("*").FROM("t_user");
            if(name != null){
                sql.WHERE("name LIKE concat('%',concat(#{name},'%'))");
            }
        System.out.println(sql.toString());
        return sql.toString();
    }
}


测试代码:
		User u = new User();
		u.setName("xx");
		List<User> list = userMapper.DynaSQL2(u);
//		List<User> list = userMapper.DynaSQL(u);
		for(User uu : list){
			System.out.println(uu.toString());
		}
分享到:
评论

相关推荐

    mybatis之动态SQL

    动态 SQL 在 MyBatis 中主要通过 XML 映射文件或者注解来实现。在 XML 映射文件中,我们可以使用 `&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;foreach&gt;` 等标签来构建动态 SQL。这些标签可以让我们...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    MyBatis动态拼接SQL

    MyBatis是一款强大的Java持久层框架,它允许开发者将SQL语句直接写在XML映射文件或注解中,提供了灵活的数据库交互方式。在某些场景下,我们可能需要根据业务逻辑动态地拼接SQL语句,以实现更复杂的查询需求。这就是...

    mybatis直接执行sql语句后续之一

    1. **动态SQL**:MyBatis的一个强大特性是其支持动态SQL,允许在XML映射文件或注解中构建SQL语句。比如,我们可以使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;where&gt;`等标签来根据条件动态地插入、删除或...

    MyBatis注解配置映射器:动态SQL的实现

    总结来说,MyBatis注解配置提供了一种简洁的SQL映射方式,而动态SQL功能则极大地增强了查询的灵活性。在开发过程中,熟练掌握这两点,可以提升开发效率,同时使代码更加易于理解和维护。通过实践项目"MyBatisPro12...

    mybatis-sql生成器

    这个工具基于Java,与MyBatis框架紧密集成,支持XML配置和注解方式,适用于各种数据库环境。 在使用MyBatis-SQL生成器时,首先要理解其核心组件和工作原理。该生成器通过读取配置文件(通常为generatorConfig.xml)...

    MyBatis 执行动态 SQL语句详解

    在 MyBatis 中,动态 SQL 是一个强大的特性,允许我们在 XML 映射文件或注解中编写条件语句,根据运行时的参数来决定 SQL 的具体执行内容。下面我们将深入探讨如何在 MyBatis 中执行动态 SQL 语句。 首先,我们要...

    mybatissql_mybatis解决sql注入

    MyBatis的核心是基于XML或注解的SQL映射文件,这些文件定义了SQL查询与Java对象之间的映射关系。在处理SQL注入时,MyBatis提供了一些关键机制: 1. **预编译参数化SQL**:MyBatis支持使用占位符(如`?`)来构建动态...

    Spring Boot整合mybatis使用注解实现动态Sql、参数传递等常用操作(实现方法)

    Mybatis的注解支持动态SQL,可以使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签。例如,动态判断是否更新密码: ```java @Update({ "update sys_user", "!= null'&gt;", "set password=#{password}", ...

    MyBatis拦截器分页与动态修改SQL及其参数值

    MyBatis是一个强大的Java持久层框架,它允许开发者将数据库操作与业务逻辑分离,通过XML或注解方式定义SQL语句。在某些场景下,我们可能需要对SQL进行动态修改或者实现分页功能,这时MyBatis的拦截器机制就显得尤为...

    demo.zip_Mybatis注解时的sql语句拼接方法_SSM 注解_SSM分页查询_mybatis注解分页_基于ssm

    `demo.zip`中的内容可能是解决这个问题的一种方案,它提供了一种在MyBatis注解中进行SQL语句拼接的方法。 首先,让我们深入理解MyBatis注解的基础知识。MyBatis的注解主要分为以下几种: 1. `@Select`:用于标记一...

    原样输出mybatis的sql执行语句(mysql和oracle都可用).zip

    MyBatis通过动态SQL映射文件或注解来将Java代码与SQL语句关联起来,它的核心功能包括SQL语句的构建、参数绑定和结果映射。在默认情况下,MyBatis并不会直接打印出执行的SQL语句,因此我们需要开启日志功能以获取这些...

    springboot+mybatis+sqlserver

    【标题】"springboot+mybatis+sqlserver"是一个基于Spring Boot、MyBatis和Microsoft SQL Server构建的基础开发框架,适用于快速开发企业级应用。这个框架整合了三个关键组件,旨在简化开发流程,提高开发效率。 ...

    mybatis自动sql生成插件源码

    在实际应用中,要正确使用这个插件,你需要将其配置到MyBatis的配置文件中,指定拦截的Mapper接口或注解,然后在Mapper接口的方法上使用定义的注解,即可享受自动SQL生成带来的便利。同时,由于插件适配的是MyBatis ...

    SQL.rar_MyBatis3DynamicSql_dynamic mybatis_mybatis_mybatis Dyna

    MyBatis,作为一个优秀的Java持久层框架,极大地简化了数据库操作,它允许开发者将SQL语句直接写在XML配置文件或者注解中,实现了SQL与Java代码的解耦。而在MyBatis 3中,引入了动态SQL的功能,这正是"SQL.rar_...

    mybatis-generator生成sqlserver数据库Bean、Dao、Mapper代码工具

    Mapper XML文件包含了SQL语句的具体实现,与DAO接口对应,MyBatis框架会根据这些XML文件动态生成SQL执行。 在使用MBG之前,你需要准备以下几样东西: 1. 数据库连接信息:包括数据库URL、用户名和密码,这是MBG连接...

    mybatis动态sql及关联查询项目示例

    本项目示例主要围绕MyBatis的动态SQL和关联查询进行深入探讨,旨在帮助开发者更好地理解和运用这两个特性。 动态SQL是MyBatis的一大亮点,它允许我们在运行时根据条件动态地生成SQL语句。这种功能在处理复杂的业务...

    MyBatis动态SQL

    除了在XML映射文件中使用动态SQL,MyBatis还支持在Mapper接口的方法签名中使用注解来实现动态SQL。例如,可以使用`@Param`注解传入参数,然后在方法体内部使用这些参数构造动态SQL。 通过以上讲解,我们可以看出...

    SpringMVC+Mybatis+SQLServer整合源码 含数据库文件

    Mapper接口或Mapper XML文件定义了具体的数据库操作,通过Mybatis的动态代理机制,实现了方法调用与SQL执行的绑定。 在SQLServer数据库方面,它提供了强大的数据存储和处理能力。包括表、视图、存储过程、触发器等...

    Mybatis下动态sql中##和$$的区别讲解

    --,那么SQL动态解析阶段之后,预编译之前的SQL将变为: select * from user; delete user; -- where name = ?; -- 之后的语句将作为注释,不起作用,因此本来的一条查询语句偷偷的包含了一个删除表数据的SQL。 ...

Global site tag (gtag.js) - Google Analytics