`
y806839048
  • 浏览: 1120698 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybatis xml文件中传入参数和if结合使用时要注意的地方

阅读更多

 

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 &gt; #{agoTime}

</if>

原因是:

如果将and语句中的#{属性}写在if语句中,mybatis会去对象中从它的get方法中取值,而我之前是直接传递的值,并没有封装对象。

 

解决办法:

将属性封装到一个对象中,设置其get方法即可

 

0
0
分享到:
评论

相关推荐

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    Mybatis Log(自动填充sql参数打印到控制台)

    此外,Mybatis还支持使用`&lt;bind&gt;`标签在XML映射文件中定义变量,这在处理复杂的SQL逻辑时非常有用。例如: ```xml SELECT * FROM users WHERE &lt;if test="status != null"&gt; status = #{status} &lt;if test=...

    MyBatis3.3.0中文文档

    MyBatis允许在映射器中使用动态SQL,这是通过在XML中使用if、choose、when、otherwise、trim、where、set、foreach、bind等标签来实现的。动态SQL使得SQL语句可以更加灵活地应对不同的查询条件和数据库表结构。 ###...

    Mybatis中文参考文档

    - **参数传递**:在SQL语句中使用`#{}`占位符来指定参数位置,MyBatis会自动将Java对象中的属性值传递给这些位置。 #### 九、结果映射 - **ResultMaps**:MyBatis提供了强大的结果映射机制,可以将查询结果映射为...

    MyBatis 中文帮助文档以及MyBatis包

    6. **动态SQL**:MyBatis的动态SQL功能强大,可以在映射文件中使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;where&gt;`、`&lt;set&gt;`等标签编写灵活的SQL语句。 7. **结果映射**:MyBatis支持自动将查询结果映射到...

    mybatis 中文文档

    3. **Mapper 接口与 XML 映射文件**:MyBatis 使用 Mapper 接口来定义 SQL 操作,对应的 XML 文件则包含具体的 SQL 语句和结果映射。通过 `&lt;select&gt;`, `&lt;insert&gt;`, `&lt;update&gt;`, `&lt;delete&gt;` 等标签编写 SQL,并通过 `...

    Mybatis多参数查询与列表查询不同方式实现

    在Mybatis这个强大的持久层框架中,多参数查询与列表查询是常见的操作,尤其是在处理复杂的业务逻辑时。本文将深入探讨Mybatis如何实现这两种查询方式,并提供多种实现方法。 首先,我们来理解Mybatis的基本概念。...

    mybatis中操作日期实例分析

    当我们需要插入日期数据时,可以在Mapper XML文件中的`&lt;insert&gt;`标签内使用`#{}`占位符,将Java对象中的日期属性传递到SQL语句中。同时,确保Java对象的日期属性与数据库字段类型匹配。 3. **查询日期数据** 在...

    mybatis jar 文件和学习文档

    在MyBatis中,可以使用XML映射文件来定义SQL语句及其参数类型和返回类型。这有助于保持SQL与业务逻辑分离,并允许更灵活地编写SQL语句。 ### Dynamic SQL MyBatis支持动态SQL,即在运行时构建SQL语句。这可以通过...

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

    MyBatis是一个强大的Java持久层框架,它允许开发者将数据库操作与业务逻辑分离,通过XML或注解方式...通过分析提供的代码文件,我们可以深入学习MyBatis的高级特性,并将其应用到实际项目中,提升开发效率和代码质量。

    Mybatis参数传递1

    在编写SQL映射文件时,要注意参数类型的正确设置以及如何在XML中引用这些参数。同时,合理使用`if`等标签进行条件判断,可以提高SQL的可读性和效率。在处理多参数或者复杂查询条件时,封装对象和使用注解通常更为...

    MyBatis3.2.2中文官方文档

    SqlSession是MyBatis中使用的核心接口之一,它代表了和数据库的一次会话。通过SqlSession可以执行映射的SQL语句,获取映射器,并处理事务。 #### Statement Builders Statement Builders提供了构建SQL语句的能力,...

    MyBatis基本使用总结

    查询数据时,可以使用`@Select`注解,或者在映射文件中定义`&lt;select&gt;`标签,通过`@Results`和`@Result`来映射查询结果。更新和删除操作类似,分别使用`@Update`和`@Delete`。 五、参数映射与结果集映射 MyBatis支持...

    mybatis 3 中文 指南

    不使用XML配置文件的情况下,可以使用`SqlSessionFactoryBuilder`的`build(Configuration configuration)`方法,传入一个已经配置好的`Configuration`对象来创建`SqlSessionFactory`。 #### SqlSession的获取与使用...

    MyBatis3.5.4官方文档.rar

    MyBatis的动态SQL功能强大,可以在XML映射文件中使用条件标签(if、where、choose、when、otherwise等)来编写灵活的SQL。这大大减少了因条件变化而导致的代码修改。 6. **参数映射** MyBatis支持两种参数映射...

    google myBatis 文档

    4. **动态SQL**:MyBatis的动态SQL功能强大,可以在XML中使用if、choose、when、otherwise等标签编写条件语句,实现灵活的SQL构建。 5. **参数映射与结果映射**:MyBatis提供了自动映射机制,能将传入参数与SQL语句...

    mybatis文档

    MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 #### 二、MyBatis 的核心概念 ##### 1. SqlSessionFactory 和 ...

    mybatis学习文档

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 首先,让我们深入理解MyBatis的核心概念: 1. **配置文件**:MyBatis的...

    mybatis3.4.6中文开发手册

    5. **动态SQL**: MyBatis的动态SQL功能非常强大,可以在XML映射文件中使用if、choose、when、otherwise、where、set、foreach等元素编写动态SQL。 6. **缓存机制**: MyBatis提供了本地缓存和二级缓存,可以提高数据...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

Global site tag (gtag.js) - Google Analytics