MyBatis——[注解方式]一对多查询DEMO

API

@Select: 类似于<select>

@Insert: 类似于<insert>

@Update: 类似于<update>

@Delete: 类似于<delete> 

@Results: 类似于<resultMap>

@Result: 类似于<resultMap>的子标签

@One: 类似于<association>

@Many: 类似于<collection>

源代码

DEMO ONE 


public interface UserDao {
    /**
     * 用户的持久层接口
     * @return
     */
    @Select("select * from user ")
    @Results({
            @Result(id=true,property = "id",column = "id"),
            @Result(property = "name" ,column = "name"),
            @Result(property = "positions",column ="id" ,
                    javaType = List.class,
                    many=@Many(select="cn.itcast.dao.PositionDao.findById",
                    fetchType= FetchType.LAZY))
    })
    List<User> findAll();


public interface PositionDao {
    @Select("select * from position p,(select pid from u_p where uid=#{id}) u where p.id in(u.pid)")
    @Results({
            @Result(id=true,property = "id",column = "id"),
            @Result(property = "name" ,column = "name"),
            @Result(property = "permissions",column ="id" ,
                    javaType = List.class,
                    many=@Many(select="cn.itcast.dao.PermissionDao.findById",
                            fetchType= FetchType.LAZY))
    })
    List<Position> findById();
} 
  


public interface PermissionDao {
    @Select("select * from permission p,(select prid from ps_pr where psid=#{id}) u where p.id in (u.prid) ")
    @Results({
            @Result(id=true,property = "id",column = "id"),
            @Result(property = "name" ,column = "name")
    })
    List<Permission> findById();
}

DEMO TWO

public interface ResourceMapper {

    @Select("SELECT * FROM resource")
    @Results(value = {
            @Result(property = "id",column = "id",id = true),
            @Result(property = "pattern",column = "pattern"),
            @Result(property = "roles",column = "id",javaType = List.class,
                    many = @Many(select = "club.zstuca.myzstu.mapper.RoleMapper.loadRolesByResourceId",
                            fetchType = FetchType.LAZY)
            )
    })
    List<Resource> getAllResource();
}
public interface RoleMapper {
    @Select("SELECT * FROM role WHERE id=#{id}")
    Role loadRolesById(String id);

    @Select("SELECT * FROM resource_role rr LEFT JOIN role r ON rr.rid=r.id WHERE rr.sid=#{resourceId}")
    List<Role> loadRolesByResourceId(String resourceId);
}

参考文章

https://blog.csdn.net/desert568/article/details/79079151

http://bbs.itheima.com/thread-440927-1-1.html

https://zhuanlan.zhihu.com/p/66919945

https://blog.csdn.net/qq_42524262/article/details/97664924

发布了1425 篇原创文章 · 获赞 260 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/weixin_43272781/article/details/104733254