`
wangjie2013
  • 浏览: 173768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MyBatis3使用#{}传递参数值为空

阅读更多

 

    最近做项目的时候遇到一个问题,使用mybatis作为项目的持久层,举一个简单的例子:

<select id="getAccountByName" parameterType="String" resultType="Account">
		select 
			accountname as accountName,
			accountpswd as accountPassword,
			createtime as createTime
		from
			account
		where
			accountname = #{accountName }
	</select>

     这是在mapper文件中的一段配置,很简单就是通过accountName获取account的相应信息。

     不知道你又没有看出这段配置中的错误,反正我被这个问题折磨了一天!

     #{}是mybatis中的一种占位符,它会将传入的数据预编译后去除关键字等后放到相应的位置,不过使用占位符的时候我们千万不能留有空格!!

   #{accountName(这里有一个空格)},正确的写法是: #{accountName} ,将所有位置占满不留一个空格!!!!

    其实道理很简单,mybatis的映射原理就是Map,如果我们在一个map中存入一个值:map.put("key ","value"),在通过map.get("key");取出来的为null。万恶的空格呀。

2
2
分享到:
评论

相关推荐

    mybatis多条件查询处理方案(查询条件为数据库字段非传递参数).pdf

    对于某些场景,我们可能需要在不依赖传递参数的情况下,根据数据库字段的值进行查询。比如,查询定时显示的轮播图,其`fixed_time`字段可以是0或1,其中0表示不定时显示,1表示定时显示。同时,如果定时显示,还需要...

    Mybatis Integer类型参数值为0时得到为空的解决方法

    Mybatis Integer类型参数值为0时得到为空的解决方法 Mybatis 是一个流行的持久层框架,广泛应用于 Java 应用程序中。然而,在使用 Mybatis 进行数据库操作时,经常会遇到一些棘手的问题。其中之一就是当 Integer ...

    mybatis中操作日期实例分析

    注意,日期比较时需要考虑格式化问题,可能需要使用`PreparedStatement`的`setDate()`或`setTimestamp()`方法设置参数值。 4. **动态SQL与日期** MyBatis的动态SQL功能允许我们在XML映射文件中根据条件构建SQL语句...

    Mybatis基本使用(基于XML源码).zip

    通过`#{}`占位符,Mybatis可以自动将参数值插入到SQL语句中。例如,`SELECT * FROM user WHERE id = #{id}`,这里的`#{id}`会自动匹配Java方法中的参数。 在结果集封装方面,Mybatis提供了自动映射和手动映射两种...

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

    在Mybatis中,`#{}`是预编译参数的占位符,它会在SQL执行时被替换为实际的值,从而避免SQL注入问题。 注意,`&lt;if&gt;`标签用于判断`tags`是否为空或者其大小是否大于0,以决定是否需要执行`&lt;foreach&gt;`循环。这是因为...

    高级软件人才培训专家-day09-Mybatis

    `,并由 MyBatis 自动设置参数值。 - `${...}` 直接将参数拼接到 SQL 语句中,容易导致 SQL 注入问题。 #### 五、日志输出 为了方便调试和维护,可以在 `application.properties` 文件中开启 MyBatis 的日志输出。...

    MyBatis 通用 Dao.pdf

    在实际使用时,可以根据用户需求选择合适的排序方式传递给查询条件。 #### 三、分页类设计 分页查询是数据查询中非常常见的需求之一,尤其在数据量较大的情况下显得尤为重要。为了更好地支持分页功能,可以创建一...

    mybatis条件查询

    MyBatis使用`#{}`符号来引用参数,如`#{keyword}`,这将自动处理PreparedStatement的预编译过程,提高安全性并防止SQL注入。 结合以上知识,我们可以根据`t_score`这个文件名推断,可能是在处理一个与分数相关的表...

    mybatis-plus增删改查分页

    在查询时,将Page对象作为参数传递,Mybatis-Plus会自动处理分页逻辑,返回结果中包含了总记录数和分页数据。 5. **Lambda表达式支持** Mybatis-Plus提供了LambdaQueryWrapper,使用Java 8的Lambda表达式进行条件...

    深入学习MyBatis中的参数(推荐)

    - 如果有多个参数或者使用了@Param注解,方法会将参数转换为一个Map,其中键值对的形式为`&lt;参数名称, 参数值&gt;`。对于没有指定名称的参数,会使用参数的位置索引来生成如`param1`, `param2`等默认名称。 在处理多...

    mybatis相关面试问题.docx

    - 执行原理是MyBatis使用OGNL语言表达式从SQL参数对象中获取值,根据表达式的计算结果动态拼接SQL,以实现SQL的动态生成。 4. **缓存机制** - **一级缓存**:基于PerpetualCache的HashMap,作用域是Session。当...

    MyBatis-Plus使用-条件构造器.docx

    另外,对于 `Map` 或 `List` 类型的参数,如果为空,它们不会被包含在生成的 SQL 中。为了提高代码的可读性和维护性,文档建议避免直接通过 `Map` 传递条件,而是使用 DTO(Data Transfer Object)进行数据传输。 ...

    Mybatis查询记录条数的实例代码

    在Mybatis中,参数传递是通过#{value}的形式来实现的,其中value是传递的参数值。在上面的例子中,我们传递了一个String类型的参数value,用于查询username列中含有指定值的记录条数。 处理null值 在查询记录条数...

    MyBatis 动态拼接Sql字符串的问题

    每个`&lt;if&gt;`标签对应一个可能需要更新的字段,只有当该字段的值不为空时,才会将其添加到SQL中。配合`&lt;trim&gt;`标签,可以确保生成的SQL语句语法正确,避免了多余的逗号。 通过上述MyBatis的动态SQL特性,开发者能够...

    Mybatis查不到数据查询返回Null问题

    在使用Mybatis进行数据查询时,有时可能会遇到一个棘手的问题,即查询返回的结果为NULL,而使用`SELECT COUNT(*) FROM xxx`统计行数时却能正常返回数据。这种问题通常会让开发者感到困惑,因为这表明数据库中确实...

    mybatis+Oracle做批量导入时的坑

    这是因为在Oracle中,通常我们需要为每条新记录分配一个唯一的序列号,这里使用`SEQ_B_LEASE_INFORMATION.nextval`来获取序列的下一个值。 SQL语句的结构是一个嵌套的`SELECT`语句,外层用于合并所有内部的`UNION ...

    ssm框架\mybatis\动态sql\1.使用动态SQL完成多条件查询\示例2:改造用户表的查询操作-if(教材示

    这里的`#{}`是MyBatis的参数占位符,会自动将Java对象的属性值注入到SQL语句中。 通过这种方式,我们可以构建出一个动态的SQL查询,它能够根据实际传递的参数灵活地调整查询条件,极大地提高了代码的复用性和可读性...

    MyBatis常用标签大全

    例如,在以下查询语句中,`#{_parameter}` 被用来引用传入的参数值: ```xml SELECT * FROM 库名.表名 WHERE id = #{_parameter} ``` 当调用`E getById(Integer id)`方法时,`id`的值会被替换到`#{_parameter}`的...

    SSM笔记-参数处理

    Map的键是字段名,值是对应的参数值。例如: ```java User getUserByMap(Map, Object&gt; params); ``` XML映射文件中,可以根据Map的键来取值: ```xml SELECT * FROM user WHERE id = #{id} AND name = #{...

    MyBatis动态SQL是一项强大的特性,它允许我们在编写SQL语句时根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的

    MyBatis会根据XML映射文件中的标签和函数配置,结合实际传递的参数值,动态构建出最终的SQL语句。这样,开发者就无需手动编写大量的SQL语句,也无需担心因为条件变化而导致的SQL语句错误。 ### 安全性和注意事项 ...

Global site tag (gtag.js) - Google Analytics