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