之前学习的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());
}
分享到:
相关推荐
动态 SQL 在 MyBatis 中主要通过 XML 映射文件或者注解来实现。在 XML 映射文件中,我们可以使用 `<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<foreach>` 等标签来构建动态 SQL。这些标签可以让我们...
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
MyBatis是一款强大的Java持久层框架,它允许开发者将SQL语句直接写在XML映射文件或注解中,提供了灵活的数据库交互方式。在某些场景下,我们可能需要根据业务逻辑动态地拼接SQL语句,以实现更复杂的查询需求。这就是...
1. **动态SQL**:MyBatis的一个强大特性是其支持动态SQL,允许在XML映射文件或注解中构建SQL语句。比如,我们可以使用`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`等标签来根据条件动态地插入、删除或...
总结来说,MyBatis注解配置提供了一种简洁的SQL映射方式,而动态SQL功能则极大地增强了查询的灵活性。在开发过程中,熟练掌握这两点,可以提升开发效率,同时使代码更加易于理解和维护。通过实践项目"MyBatisPro12...
这个工具基于Java,与MyBatis框架紧密集成,支持XML配置和注解方式,适用于各种数据库环境。 在使用MyBatis-SQL生成器时,首先要理解其核心组件和工作原理。该生成器通过读取配置文件(通常为generatorConfig.xml)...
在 MyBatis 中,动态 SQL 是一个强大的特性,允许我们在 XML 映射文件或注解中编写条件语句,根据运行时的参数来决定 SQL 的具体执行内容。下面我们将深入探讨如何在 MyBatis 中执行动态 SQL 语句。 首先,我们要...
MyBatis的核心是基于XML或注解的SQL映射文件,这些文件定义了SQL查询与Java对象之间的映射关系。在处理SQL注入时,MyBatis提供了一些关键机制: 1. **预编译参数化SQL**:MyBatis支持使用占位符(如`?`)来构建动态...
Mybatis的注解支持动态SQL,可以使用`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签。例如,动态判断是否更新密码: ```java @Update({ "update sys_user", "!= null'>", "set password=#{password}", ...
MyBatis是一个强大的Java持久层框架,它允许开发者将数据库操作与业务逻辑分离,通过XML或注解方式定义SQL语句。在某些场景下,我们可能需要对SQL进行动态修改或者实现分页功能,这时MyBatis的拦截器机制就显得尤为...
`demo.zip`中的内容可能是解决这个问题的一种方案,它提供了一种在MyBatis注解中进行SQL语句拼接的方法。 首先,让我们深入理解MyBatis注解的基础知识。MyBatis的注解主要分为以下几种: 1. `@Select`:用于标记一...
MyBatis通过动态SQL映射文件或注解来将Java代码与SQL语句关联起来,它的核心功能包括SQL语句的构建、参数绑定和结果映射。在默认情况下,MyBatis并不会直接打印出执行的SQL语句,因此我们需要开启日志功能以获取这些...
【标题】"springboot+mybatis+sqlserver"是一个基于Spring Boot、MyBatis和Microsoft SQL Server构建的基础开发框架,适用于快速开发企业级应用。这个框架整合了三个关键组件,旨在简化开发流程,提高开发效率。 ...
在实际应用中,要正确使用这个插件,你需要将其配置到MyBatis的配置文件中,指定拦截的Mapper接口或注解,然后在Mapper接口的方法上使用定义的注解,即可享受自动SQL生成带来的便利。同时,由于插件适配的是MyBatis ...
MyBatis,作为一个优秀的Java持久层框架,极大地简化了数据库操作,它允许开发者将SQL语句直接写在XML配置文件或者注解中,实现了SQL与Java代码的解耦。而在MyBatis 3中,引入了动态SQL的功能,这正是"SQL.rar_...
Mapper XML文件包含了SQL语句的具体实现,与DAO接口对应,MyBatis框架会根据这些XML文件动态生成SQL执行。 在使用MBG之前,你需要准备以下几样东西: 1. 数据库连接信息:包括数据库URL、用户名和密码,这是MBG连接...
本项目示例主要围绕MyBatis的动态SQL和关联查询进行深入探讨,旨在帮助开发者更好地理解和运用这两个特性。 动态SQL是MyBatis的一大亮点,它允许我们在运行时根据条件动态地生成SQL语句。这种功能在处理复杂的业务...
除了在XML映射文件中使用动态SQL,MyBatis还支持在Mapper接口的方法签名中使用注解来实现动态SQL。例如,可以使用`@Param`注解传入参数,然后在方法体内部使用这些参数构造动态SQL。 通过以上讲解,我们可以看出...
Mapper接口或Mapper XML文件定义了具体的数据库操作,通过Mybatis的动态代理机制,实现了方法调用与SQL执行的绑定。 在SQLServer数据库方面,它提供了强大的数据存储和处理能力。包括表、视图、存储过程、触发器等...
--,那么SQL动态解析阶段之后,预编译之前的SQL将变为: select * from user; delete user; -- where name = ?; -- 之后的语句将作为注释,不起作用,因此本来的一条查询语句偷偷的包含了一个删除表数据的SQL。 ...