Mybatis注解方式完成一对一映射查询

问题描述:首先来看两个类

public class Blog implements Serializable{
	private Integer id;	/**主键*/
	private String title;	/**标题*/
	private String summary;	/**摘要*/
	private Date releaseDate;	/**发表时间*/
	private Integer clickHit;	/**点击数*/
	private Integer replyHit;	/**评论数*/
	private String content;		/**内容*/
	private BlogType blogType;			/**所属博客类型*/
	private String keyWord;		/**关键字*/
	private Integer blogCount;			/**博客数量*/
}

Blog类里面有一个自定义类型对象BlogType,所以当我们在查询的时候,这个Blog类型的对象Mybatis框架是不会帮我们自动取注入的。因为这是一个自定义类型的类。下面附上自定义类BlogType:

public class BlogType implements Serializable {
	/**主键*/
	private Integer blogtypeid;
	/**类型名称*/
	private String typeName;
	/**序号*/
	private Integer orderNo;
	/**该类型下博客的数量*/
	private Integer blogCount;
}

这个类里面的内容就不进行介绍了,下面直接开始我们的select语句:

@Select( "select * from t_blog",
    @Results(id="BlogMap", value={
            @Result(column="id", property="id", id=true),    //1
            @Result(column="title", property="title"),		 //2
            @Result(column="summary ", property="summary"),			 //3
            @Result(column="releaseDate", property="releaseDate",jdbcType= JdbcType.TIMESTAMP),			//4
            @Result(column="clickHit", property="clickHit"),		//5
            @Result(column="replyHit", property="replyHit"),		//6
            @Result(column="content", property="content"),		//7
            @Result(column="typeId", property="blogType", javaType=BlogType.class,			//8
                    one=@One(select="com.blog.dao.BlogTypeDao.findBlogTypeById")),
            @Result(column="keyWord", property="keyWord"),				//9
    })
    public List<Blog> findBlog();

注意1,2,3,4,5,6,7,9都是Blog类里面和表格里面一一对应的,这里需要我们特殊处理的只有8。column代表的是数据库内的字段。而property代表的是类里面对应对象的名称。这里的typeId代表的是,在数据库中Blog表存的对应BlogType这个对象的位置。

发布了38 篇原创文章 · 获赞 7 · 访问量 8765

猜你喜欢

转载自blog.csdn.net/weixin_44617722/article/details/98193438