重点看代码里的注释的解释
resultmap子查询时,传多个参数时的格式:column="{自定义参数名=字段名,…}"
对方用#{参数名}接受参数值,且 parameterType=…HashMap -->
@Results对应/标签
@Result对应标签
@Many对应子标签
select是其属性
@Select对应标签
调用者的sql:
被 子查询的sql
同时这个select 还自己调用自己 进行子查询
为方便理解这个自己调用自己的子查询,附上简单的 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