当被调用时, 从日志打印如下:
select a.id,d.language_content as menu_name,a.url,a.module_id,a.isactive,a.createDate,a.updateDate,a.bak1,a.bak2,a.bak3,a.parent_id,a.type,a.orderNum,b.id module_id, b.module_name, b.remark module_remark, b.createdate module_createdate, b.updatedate module_updatedate,c.id parent_id, c.menu_name parent_name, c.url parent_url, c.isactive parent_isactive, c.createdate parent_createdate, c.updatedate parent_,
c.bak1 parent_bak1, c.bak2 parent_bak2, c.bak3 parent_bak3, c.parent_id
from sys_menu a left join sys_module b on a.module_id=b.id left join sys_menu c on a.parent_id=c.id,sys_language_content d
where a.parent_id = NULL
and a.menu_name = d.language_key
and d.locale = NULL
order by a.orderNum asc; (0 milliseconds)
当我去掉一个参数,如下:
<select id="queryChildMenuByRoot" resultMap="menuMap">
select a.id,d.language_content as menu_name,a.url,a.module_id,a.isactive,a.createDate,a.updateDate,a.bak1,a.bak2,a.bak3,a.parent_id,a.type,a.orderNum,b.id module_id, b.module_name, b.remark module_remark, b.createdate module_createdate, b.updatedate module_updatedate,c.id parent_id, c.menu_name parent_name, c.url parent_url, c.isactive parent_isactive, c.createdate parent_createdate, c.updatedate parent_,
c.bak1 parent_bak1, c.bak2 parent_bak2, c.bak3 parent_bak3, c.parent_id
from sys_menu a left join sys_module b on a.module_id=b.id left join sys_menu c on a.parent_id=c.id,sys_language_content d
where a.parent_id = 1
and a.menu_name = d.language_key
and d.locale = #{locale}
order by a.orderNum asc
</select>
当调用时候,控制台打印如下:
select a.id,d.language_content as menu_name,a.url,a.module_id,a.isactive,a.createDate,a.updateDate,a.bak1,a.bak2,a.bak3,a.parent_id,a.type,a.orderNum,b.id module_id, b.module_name, b.remark module_remark, b.createdate module_createdate, b.updatedate module_updatedate,c.id parent_id, c.menu_name parent_name, c.url parent_url, c.isactive parent_isactive, c.createdate parent_createdate, c.updatedate parent_,
c.bak1 parent_bak1, c.bak2 parent_bak2, c.bak3 parent_bak3, c.parent_id
from sys_menu a left join sys_module b on a.module_id=b.id left join sys_menu c on a.parent_id=c.id,sys_language_content d
where a.parent_id = 1
and a.menu_name = d.language_key
and d.locale = 'zh_CN'
order by a.orderNum asc; (0 milliseconds)
从上面得出结论:Mybatis不支持多个参数输入,从文档及相关资料,要实现发现Mybatis多个参数输入必须为实体对象或者为HashMap类型。
一旦涉及多参数总是要把参数压入到对象或者HashMap中,太麻烦了。
这种使用方法真的不方便。
分享到:
相关推荐
通过以上介绍,我们可以看到MyBatis提供了多种方法来处理多参数的传递问题。开发者可以根据具体的应用场景选择最合适的方法,以提高开发效率和代码质量。无论是简单的单参数传递,还是复杂的多参数组合,MyBatis都能...
在 Mybatis 中,传递多个参数的一种常用做法是把多个参数都放在 Map 中,然后传递这个 Map 作为参数。例如: ```java public void insertAreaDivInfor(HashMap map); ``` 对应的 XML 代码为: ```xml insert into ...
多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的...
总结来说,当遇到MyBatis中关于#{index}的多参数问题时,推荐使用@Param注解或Map来明确定义参数。这样不仅可以提高代码可读性,还能避免可能的错误。对于#{index}的使用,应确保参数已按照正确的顺序和方式被包含在...
在Mybatis这个强大的持久层框架中,多参数查询与列表查询是常见的操作,尤其是在处理复杂的业务逻辑时。本文将深入探讨Mybatis如何实现这两种查询方式,并提供多种实现方法。 首先,我们来理解Mybatis的基本概念。...
以最短的时间学会Mybatis,并使用到项目中,包括搜集的很多资料;很全很全:并且有项目实例 例如:mybatis中的#和$的区别? 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user...
Mybatis 提供了这样的功能,可以通过传入参数的方式实现数据库的切换。 首先,我们需要理解Mybatis的配置文件(mybatis-config.xml)。在这个文件中,我们可以定义多个数据源,每个数据源对应一个数据库连接。例如...
当传入的参数是多个或者单个但封装在Map中时,`collection`属性的值取决于Map中的键。假设Map的键为`departmentId`,那么`collection`应该设置为`departmentId`: ```xml select * from EMPLOYEES e !=null ...
在本文中,我们将深入探讨如何利用Mybatis的注解实现增删查改(CRUD)操作以及多参数列表查询。 1. **增(Create)**: 在Mybatis中,我们可以使用`@Insert`注解来插入数据。例如: ```java @Insert("INSERT INTO ...
本篇文章将详细探讨如何在 `association` 和 `collection` 的 `column` 属性中传入多个参数,以实现更复杂的查询需求。 首先,`association` 用于表示一对一的关系,而 `collection` 用于表示一对多的关系。在映射...
Mybatis多参数传入实现代码 Mybatis是一款流行的Java持久层框架,它提供了多种方式来传入多个参数,以下是两种常见的实现方法: 第一种方式:使用@Param注解 在Mybatis中,我们可以使用@Param注解来传入多个参数...
当需要传入多个参数时,可以使用MyBatis的`@Param`注解。在接口方法中,为每个参数添加`@Param`注解,指定参数名。在XML文件中,使用对应的参数名来获取值。 ```java public List<Teacher> selectTeacher(@Param...
在一个Mapper接口方法中,如果需要传入两个或更多参数,可以给每个参数添加`@Param`注解,并指定一个唯一的字符串作为参数名。例如: ```java public interface UserMapper { void updateUser(@Param("id") int ...
在MyBatis中,参数的传递方式有很多种,主要包括基本类型的参数、对象参数、多个参数以及使用注解的方式。下面将详细讲解这些方法及其注意事项。...在处理多参数或者复杂查询条件时,封装对象和使用注解通常更为便捷。
MyBatis能够通过传入的参数动态生成SQL语句,这是通过OGNL(Object-Graph Navigation Language)表达式语言实现的。这种设计让MyBatis具有很好的灵活性和扩展性。参数映射是数据处理层的另一个重要功能,主要涉及...
- **传入的SQL字符串**:必须按照"MyBatis能识别的格式"编写,如"select XXX as instanceid, XXX as instancename ....",这样才能自动将查询结果映射到Java对象。 - **#{}与${}的区别**:`#{}`用于预编译处理,...
2. 接收调用请求:当调用MyBatis API时,传入SQL的ID和参数对象。 3. 处理操作请求:这一阶段主要包括查找MappedStatement对象,解析参数,执行SQL以及处理结果。 4. 返回处理结果:执行完毕后,将处理结果返回给...
10. **动态SQL**: Mybatis 的一大亮点是动态SQL,允许在映射文件中编写条件语句,根据传入参数的不同,生成不同的SQL。 要动手实现一个类似Mybatis的框架,首先需要设计和实现上述组件。理解每个组件的功能和它们...
- **SQL语句**:myBatis.net支持动态SQL,即可以根据传入的参数动态生成SQL语句。这使得myBatis.net在灵活性方面表现出色。 - **参数映射(Parameter Map)**:用于定义传入SQL语句的参数以及其数据类型、方向等信息...
6. **Service和DAO层**:在服务层(Service)中,我们可以调用DAO(Data Access Object)层的方法,传入必要的参数,执行多表连接查询。DAO层则通过SqlSession和Mapper接口进行操作。 7. **事务管理**:多表操作...