package com.demo.sys.mapper; import java.util.List; import com.demo.sys.entity.Menu; public interface MenuMapper { public List<Menu> queryRootMenu(String locale); public List<Menu> queryChildMenuByRoot(int parentId,String locale); public Menu queryMenu(Menu menu); public int addMenu(Menu menu); }
<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 = #{id} 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 = NULL
and a.menu_name = d.language_key
and d.locale = NULL
order by a.orderNum asc; (0 milliseconds)
当我去掉一个参数,如下:
package com.demo.sys.mapper; import java.util.List; import com.demo.sys.entity.Menu; public interface MenuMapper { public List<Menu> queryRootMenu(String locale); public List<Menu> queryChildMenuByRoot(String locale); public Menu queryMenu(Menu menu); public int addMenu(Menu menu); }
<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中,太麻烦了。
这种使用方法真的不方便。