MySQL数据库为book表 和 review表
一对多:通过一本书查询它的所有评论
Book.javabean
BookMapper.java
BookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lanou.bookstore.mapper.BookMapper">
<sql id="Base_Column_List" >
book.bookid,bookname,bookprice,bookimg,rcontent
</sql>
<resultMap type="Review" id="reviewMap">
<id column="rid" property="rid" javaType="int" jdbcType="INTEGER"/>
<result column="rcontent" property="rcontent" javaType="String" jdbcType="VARCHAR"/>
</resultMap>
<resultMap type="Book" id="bookMap">
<id column="bookid" property="bookid" javaType="String" jdbcType="VARCHAR" />
<result column="bookname" property="bookname" javaType="String" jdbcType="VARCHAR" />
<result column="bookprice" property="bookprice" javaType="double" jdbcType="FLOAT" />
<result column="bookimg" property="bookimg" javaType="String" jdbcType="VARCHAR" />
<collection property="reviews" resultMap="reviewMap"></collection>
</resultMap>
<!-- 定义一个可以装Book,还可以装Review的类型对象ResultMap -->
<select id="getBookReview" parameterType="String" resultMap="bookMap">
select
<include refid="Base_Column_List" />
from
book,review
where
book.bookid = review.bookid
and
book.bookid=#{bookid}
</select>
</mapper>
测试
结果
多对一:通过评论查询书籍
Review的javabean
package com.lanou.bookstore.domain;
import java.io.Serializable;
public class Review implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int rid;
private String rcontent;
//多对一
private Book book;
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getRcontent() {
return rcontent;
}
public void setRcontent(String rcontent) {
this.rcontent = rcontent;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
}
ReviewMapper.java
package com.lanou.bookstore.mapper;
import com.lanou.bookstore.domain.Review;
public interface ReviewMapper {
//通过评论查询书籍
public Review getReviewBook(int rid);
}
ReviewMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lanou.bookstore.mapper.ReviewMapper">
<sql id="Base_Column_List" >
book.bookid,bookname,bookprice,bookimg,rcontent
</sql>
<resultMap type="Review" id="reviewMap">
<id column="rid" property="rid" javaType="int" jdbcType="INTEGER"/>
<result column="rcontent" property="rcontent" javaType="String" jdbcType="VARCHAR"/>
<association property="book" resultMap="bookMap"></association>
</resultMap>
<resultMap type="Book" id="bookMap">
<id column="bookid" property="bookid" javaType="String" jdbcType="VARCHAR" />
<result column="bookname" property="bookname" javaType="String" jdbcType="VARCHAR" />
<result column="bookprice" property="bookprice" javaType="double" jdbcType="FLOAT" />
<result column="bookimg" property="bookimg" javaType="String" jdbcType="VARCHAR" />
</resultMap>
<select id="getReviewBook" parameterType="String" resultMap="reviewMap">
select
<include refid="Base_Column_List" />
from
book,review
where
book.bookid = review.bookid
and
rid = #{rid}
</select>
</mapper>
测试
package com.lanou.bookstore.test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.lanou.bookstore.domain.Book;
import com.lanou.bookstore.domain.Review;
import com.lanou.bookstore.mapper.BookMapper;
import com.lanou.bookstore.mapper.ReviewMapper;
public class test {
public static void main(String[] args) throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// 构建工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sqlSessionFactory.openSession();
ReviewMapper reviewMapper = (ReviewMapper)session.getMapper(ReviewMapper.class);
// BookMapper bookMapper = (BookMapper)session.getMapper(BookMapper.class);
//
// Book book = bookMapper.getBookReview("1");
// for(Review r :book.getReviews()){
// System.out.println(r.getRcontent());
// }
//查询bookid=1这本书
Review review = reviewMapper.getReviewBook(8);
Book book = review.getBook();
System.out.println(book.getBookname());
}
}
结果