首页 > 其他 > 详细

mybatis association 一对一

时间:2015-09-24 11:10:24      阅读:265      评论:0      收藏:0      [点我收藏+]

举例:

一个文章有一个用户,当查询文章时,显示文章信息和文章作者信息,这里不考虑一个文章多个作者的问题。

表结构:

文章表:

DROP TABLE IF EXISTS `article`;
CREATE TABLE `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `article_name` varchar(50) NOT NULL COMMENT ‘文章名‘,
  `article_content` varchar(1000) NOT NULL COMMENT ‘文章内容‘,
  `author_id` int(11) NOT NULL COMMENT ‘作者id‘,
  `create_time` datetime NOT NULL COMMENT ‘创建时间‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

作者表:

DROP TABLE IF EXISTS `author`;
CREATE TABLE `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `author_name` varchar(50) NOT NULL COMMENT ‘作者名‘,
  `author_age` int(11) NOT NULL COMMENT ‘作者年龄‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

文章实体:

package com.heli.core.user.model;

import java.io.Serializable;
import java.util.Date;

public class Article implements Serializable {
    private Integer id;

    private String articleName;

    private String articleContent;

    private Integer authorId;

    private Date createTime;
    
    private Author author;
    
    public Author getAuthor() {
		return author;
	}

	public void setAuthor(Author author) {
		this.author = author;
	}

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getArticleName() {
        return articleName;
    }

    public void setArticleName(String articleName) {
        this.articleName = articleName;
    }

    public String getArticleContent() {
        return articleContent;
    }

    public void setArticleContent(String articleContent) {
        this.articleContent = articleContent;
    }

    public Integer getAuthorId() {
        return authorId;
    }

    public void setAuthorId(Integer authorId) {
        this.authorId = authorId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

作者实体:

package com.heli.core.user.model;

import java.io.Serializable;

public class Author implements Serializable {
    private Integer id;

    private String authorName;

    private Integer authorAge;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAuthorName() {
        return authorName;
    }

    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    public Integer getAuthorAge() {
        return authorAge;
    }

    public void setAuthorAge(Integer authorAge) {
        this.authorAge = authorAge;
    }
}

文章的映射文件ArticleMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.heli.core.user.mapper.ArticleMapper" >
  <resultMap id="BaseResultMap" type="com.heli.core.user.model.Article" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="article_name" property="articleName" jdbcType="VARCHAR" />
    <result column="article_content" property="articleContent" jdbcType="VARCHAR" />
    <result column="author_id" property="authorId" jdbcType="INTEGER" />
    <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
    <association property="author" column="author_id" javaType="com.heli.core.user.model.Author" select="getAuthor" >
  </resultMap>
  <resultMap id="authorResultMap" type="com.heli.core.user.model.Author" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="author_name" property="authorName" jdbcType="VARCHAR" />
    <result column="author_age" property="authorAge" jdbcType="INTEGER" />
  </resultMap>
  
  <sql id="Base_Column_List" >
    id, article_name, article_content, author_id, create_time
  </sql>
  <select id="getAuthor" resultMap="authorResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from author
    where id = #{authorId,jdbcType=INTEGER}
  </select>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from article
    where id = #{id,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from article
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.heli.core.user.model.Article" useGeneratedKeys="true" keyProperty="id" >
    insert into article (article_name, article_content, author_id, 
      create_time)
    values (#{articleName,jdbcType=VARCHAR}, #{articleContent,jdbcType=VARCHAR}, #{authorId,jdbcType=INTEGER}, 
      #{createTime,jdbcType=TIMESTAMP})
  </insert>
  <insert id="insertSelective" parameterType="com.heli.core.user.model.Article" useGeneratedKeys="true" keyProperty="id" >
    insert into article
    <trim prefix="(" suffix=")" suffixOverrides="," >
      article_name,
      article_content,
      author_id,
      create_time,
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      #{articleName,jdbcType=VARCHAR},
      #{articleContent,jdbcType=VARCHAR},
      #{authorId,jdbcType=INTEGER},
      #{createTime,jdbcType=TIMESTAMP},
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.heli.core.user.model.Article" >
    update article
    <set >
      <if test="articleName != null" >
        article_name = #{articleName,jdbcType=VARCHAR},
      </if>
      <if test="articleContent != null" >
        article_content = #{articleContent,jdbcType=VARCHAR},
      </if>
      <if test="authorId != null" >
        author_id = #{authorId,jdbcType=INTEGER},
      </if>
      <if test="createTime != null" >
        create_time = #{createTime,jdbcType=TIMESTAMP},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.heli.core.user.model.Article" >
    update article
    set article_name = #{articleName,jdbcType=VARCHAR},
      article_content = #{articleContent,jdbcType=VARCHAR},
      author_id = #{authorId,jdbcType=INTEGER},
      create_time = #{createTime,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>

这样查询文章时,就可以获取文章的作者信息了。

mybatis association 一对一

原文:http://my.oschina.net/ydsakyclguozi/blog/510533

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!