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

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

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

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

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

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

调用者的sql:

 
    	
    		
    		
    		
    		
    		
    		
    		
    		
    	
    	
    	
    

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

  
    	
    		
    		
    		
    		
    	
    
    	

为方便理解这个自己调用自己的子查询,附上简单的 menu对应的表:
mybatis的高级映射 (resultmap标签,column属性传多个参数,,select子查询自身)_第1张图片


使用注解的写法:

对应的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);
    }

你可能感兴趣的:(心得总结,mybatis,sql高级映射,框架知识点,知识总结)