mybatis的高级映射 (resultmap标签,column属性传多个参数,,select子查询自身) 您所在的位置:网站首页 mybatis传入多个参数 mybatis的高级映射 (resultmap标签,column属性传多个参数,,select子查询自身)

mybatis的高级映射 (resultmap标签,column属性传多个参数,,select子查询自身)

2024-02-19 02:41| 来源: 网络整理| 查看: 265

mybatis的高级映射(包括 resultmap标签,column属性传多个参数,select子查询自身)

重点看代码里的注释的解释

resultmap子查询时,传多个参数时的格式:column="{自定义参数名=字段名,…}" 对方用#{参数名}接受参数值,且 parameterType=…HashMap -->

@Results对应/标签 @Result对应标签

@Many对应子标签 select是其属性 @Select对应标签

调用者的sql:

select *,0 pid from users where username=#{username} and password=#{password}

被 子查询的sql 同时这个select 还自己调用自己 进行子查询

select *,#{uid} uid from menu where id in (select mid from user_menu where uid=#{uid}) and pid=#{pid}

为方便理解这个自己调用自己的子查询,附上简单的 menu对应的表:  menu对应的表

使用注解的写法:

对应的users的sql映射写法:

public interface UsersMapper { // // @Results(value={ // @Result(id=true,column="id",property="id"), // @Result(column="username",property="username"), // @Result(column="password",property="password"), // @Result(property="menu",many=@Many(select="cn.cong.mapper.MenuMapper.selByPid"),column="{uid=id,pid=pid}") // }) //如果需要传递多个参数 column="{"key"=列名,"key"=列名}" key自定义 //另一个查询中获取传递过来的参数 #{key} //另一个查询public void select(Map map); //@Select("select *,0 pid from users where username=#{username} and password=#{password}") Users selByUsers(Users users); }

对应的menu的sql映射写法:

public interface MenuMapper { // @Results(value={ // @Result(id=true,property="id",column="id"), // @Result(property="name",column="name"), // @Result(property="pid",column="pid"), // @Result(property="children",many=@Many(select="selByPid"),column="{uid=uid,pid=id}"), // }) // @Select("select *,#{uid} uid from menu where id in (select mid from user_menu where uid=#{uid}) and pid=#{pid}") List selByPid(Map map); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有