mybatis中如果用了if那么传进来的参数不能直接单独传入,要封装到map或bo中传入,要么去了if
(if test表达式是从实体的get方法获取的,单传的参数没有实体就没有get方法)
mybatis xml文件中传入参数和if结合使用时要注意的地方:
这里直接传入int但是又用了if所以出错
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'customerKey' in 'class java.lang.Integer'
<select id="getYJSL" parameterType="Integer" resultType="int">
SELECT count(*) yjsl
FROM tb_con_obj A, TB_CON_ORD B
WHERE A.CONOBJ_KEY = B.CONOBJ_KEY
AND A.IS_CONFERPRICE = 'Y'
AND B.ORDER_STATUS = 'A'
AND A.CONOBJ_STATUS <![CDATA[<>]]> 'E'
<if test="customerKey !=null and customerKey!='' ">
AND (B.CUSTOMER_KEY = #{customerKey} or a.customer_key = #{customerKey})
</if>
</select>
====
使用SpringMVC+Mybatis框架写项目的时候,在mapper里面的sql语句处出现了这个错误
<if test="agoTime != null">
and updateTime > #{agoTime}
</if>
原因是:
如果将and语句中的#{属性}写在if语句中,mybatis会去对象中从它的get方法中取值,而我之前是直接传递的值,并没有封装对象。
解决办法:
将属性封装到一个对象中,设置其get方法即可
相关推荐
标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...
此外,Mybatis还支持使用`<bind>`标签在XML映射文件中定义变量,这在处理复杂的SQL逻辑时非常有用。例如: ```xml SELECT * FROM users WHERE <if test="status != null"> status = #{status} <if test=...
MyBatis允许在映射器中使用动态SQL,这是通过在XML中使用if、choose、when、otherwise、trim、where、set、foreach、bind等标签来实现的。动态SQL使得SQL语句可以更加灵活地应对不同的查询条件和数据库表结构。 ###...
- **参数传递**:在SQL语句中使用`#{}`占位符来指定参数位置,MyBatis会自动将Java对象中的属性值传递给这些位置。 #### 九、结果映射 - **ResultMaps**:MyBatis提供了强大的结果映射机制,可以将查询结果映射为...
6. **动态SQL**:MyBatis的动态SQL功能强大,可以在映射文件中使用`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`、`<set>`等标签编写灵活的SQL语句。 7. **结果映射**:MyBatis支持自动将查询结果映射到...
3. **Mapper 接口与 XML 映射文件**:MyBatis 使用 Mapper 接口来定义 SQL 操作,对应的 XML 文件则包含具体的 SQL 语句和结果映射。通过 `<select>`, `<insert>`, `<update>`, `<delete>` 等标签编写 SQL,并通过 `...
在Mybatis这个强大的持久层框架中,多参数查询与列表查询是常见的操作,尤其是在处理复杂的业务逻辑时。本文将深入探讨Mybatis如何实现这两种查询方式,并提供多种实现方法。 首先,我们来理解Mybatis的基本概念。...
当我们需要插入日期数据时,可以在Mapper XML文件中的`<insert>`标签内使用`#{}`占位符,将Java对象中的日期属性传递到SQL语句中。同时,确保Java对象的日期属性与数据库字段类型匹配。 3. **查询日期数据** 在...
在MyBatis中,可以使用XML映射文件来定义SQL语句及其参数类型和返回类型。这有助于保持SQL与业务逻辑分离,并允许更灵活地编写SQL语句。 ### Dynamic SQL MyBatis支持动态SQL,即在运行时构建SQL语句。这可以通过...
MyBatis是一个强大的Java持久层框架,它允许开发者将数据库操作与业务逻辑分离,通过XML或注解方式...通过分析提供的代码文件,我们可以深入学习MyBatis的高级特性,并将其应用到实际项目中,提升开发效率和代码质量。
在编写SQL映射文件时,要注意参数类型的正确设置以及如何在XML中引用这些参数。同时,合理使用`if`等标签进行条件判断,可以提高SQL的可读性和效率。在处理多参数或者复杂查询条件时,封装对象和使用注解通常更为...
SqlSession是MyBatis中使用的核心接口之一,它代表了和数据库的一次会话。通过SqlSession可以执行映射的SQL语句,获取映射器,并处理事务。 #### Statement Builders Statement Builders提供了构建SQL语句的能力,...
查询数据时,可以使用`@Select`注解,或者在映射文件中定义`<select>`标签,通过`@Results`和`@Result`来映射查询结果。更新和删除操作类似,分别使用`@Update`和`@Delete`。 五、参数映射与结果集映射 MyBatis支持...
不使用XML配置文件的情况下,可以使用`SqlSessionFactoryBuilder`的`build(Configuration configuration)`方法,传入一个已经配置好的`Configuration`对象来创建`SqlSessionFactory`。 #### SqlSession的获取与使用...
MyBatis的动态SQL功能强大,可以在XML映射文件中使用条件标签(if、where、choose、when、otherwise等)来编写灵活的SQL。这大大减少了因条件变化而导致的代码修改。 6. **参数映射** MyBatis支持两种参数映射...
4. **动态SQL**:MyBatis的动态SQL功能强大,可以在XML中使用if、choose、when、otherwise等标签编写条件语句,实现灵活的SQL构建。 5. **参数映射与结果映射**:MyBatis提供了自动映射机制,能将传入参数与SQL语句...
MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 #### 二、MyBatis 的核心概念 ##### 1. SqlSessionFactory 和 ...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 首先,让我们深入理解MyBatis的核心概念: 1. **配置文件**:MyBatis的...
5. **动态SQL**: MyBatis的动态SQL功能非常强大,可以在XML映射文件中使用if、choose、when、otherwise、where、set、foreach等元素编写动态SQL。 6. **缓存机制**: MyBatis提供了本地缓存和二级缓存,可以提高数据...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...