mybatis的select注解的坑

本文介绍了一种在使用MyBatis时遇到的问题,即如何在SQL语句中正确使用if条件注解。作者分享了在尝试直接通过注解编写一个简单的SQL查询时遇到的挑战,以及如何通过转译解决这一问题的具体方法。

今天写sql的时候,有一个比较简单的sql,想直接通过注解写,但是发现if条件不能用,网上很多没有用的废话,或者压根不能拿来直接用的,琢磨了半天发现可以通过转译解决问题,前后再加上

@Select("<script>select count(1) from lnquiry_order_detail <where>is_del=0 <if test=\"param1!=null and param1!='' \"> and lnquiry_order_num = #{param1}</if><if test=\"param2!=null and param2!='' \"> and data_url =#{param2}</if></where></script>")
### 使用方法 @Select 注解MyBatis 框架中用于执行查询语句的注解,通常用于映射 SQL 查询语句到 Java 方法上。这是一种将 SQL 语句直接嵌入到 Java 代码中的便捷方式,而不需要使用 XML 配置文件 [^1]。 ### 示例 以下是不同场景下 @Select 注解的使用示例: ```java import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Select; // 定义用户类 class User { private int id; private String name; // Getters and Setters public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } // 定义用户映射接口 interface UserMapper { // 单条查询 @Select("SELECT * FROM users WHERE id = #{id}") User getById(int id); // 集合查询 @Select("SELECT * FROM users") List<User> listAll(); // Map 返回(需配合 @MapKey) @MapKey("id") @Select("SELECT * FROM users") Map<Integer, User> getMap(); } ``` ### 注意事项 - **配置位置**:注解方式的配置位置是 Java 接口文件,与 XML 方式的独立 XML 文件不同。这种方式会使 SQL 与代码耦合,但在简单场景下维护较为便捷 [^3]。 - **动态 SQL 支持**:注解方式对动态 SQL 有限支持,需要使用 `<script>` 标签;而 XML 方式则能完整支持动态 SQL [^3]。 - **复杂映射**:虽然注解方式支持复杂映射,但操作繁琐;XML 方式在处理复杂 SQL 或映射时更加完整且直观 [^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值