一、案例描述

书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息。

二、数据库表格

书本类别表(booktypeid,booktypename)

书本信息表(bookid,booktypeid,bookname...)

三、java代码

1.书本类别

BookType.java

package com.yh.entity;

import java.util.List;

public class BookType {
private int bookTypeId;
private String bookTypeName;
private List<Book> books; public int getBookTypeId() {
return bookTypeId;
} public void setBookTypeId(int bookTypeId) {
this.bookTypeId = bookTypeId;
} public String getBookTypeName() {
return bookTypeName;
} public void setBookTypeName(String bookTypeName) {
this.bookTypeName = bookTypeName;
} public List<Book> getBooks() {
return books;
} public void setBooks(List<Book> books) {
this.books = books;
} }

BookTypeMapper.xml

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yh.mybatis.mapper.BookTypeMapper"> <select id="findTypeById" parameterType="int"
resultMap="bookTypeMap">
select *from booktype where booktypeid = #{id}
</select> <resultMap type="BookType" id="bookTypeMap">
<id property="bookTypeId" column="booktypeid"></id>
<result property="bookTypeName" column="booktypename"></result>
<collection property="books" column="booktypeid"
select="com.yh.mybatis.mapper.BookMapper.findBookInfosByType" ofType="Book"></collection>
</resultMap>
</mapper>

BookTypeMapper.java

package com.yh.mybatis.mapper;

import com.yh.entity.BookType;

public interface BookTypeMapper {
BookType findTypeById(int id);
}

2.书本信息

Book.java(省略getter()、setter()方法)

package com.yh.entity;

import java.sql.Timestamp;
import java.sql.Date; import com.yh.dao.DBAddRecord; public class Book { // 自动赋值
private int bookId;
private int bookTypeId; private int sellerId;
private String bookName;
private String press;
private Date publishDate;
private short bookSize;
private short bookVersion;
private String author;
private String translator;
private String isbn;
private float price;
private int pageNumber;
private String introduction;
private float marketPrice;
private float memberPrice;
}

BookMapper.xml

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yh.mybatis.mapper.BookMapper"> <select id="findBookInfosByType" parameterType="int"
resultType="Book">
select bookname,dealamount,price,press,imgurl,bookid
from book where booktypeid = #{id}
</select> </mapper>

BookMapper.java

package com.yh.mybatis.mapper;

import java.util.List;

import com.yh.entity.Book;

public interface BookMapper {
List<Book> findBookInfosByType(String type);
}

3.测试代码

@ResponseBody
@RequestMapping(value="/byType",produces = "application/json; charset=utf-8")
public String byType(
@RequestParam(value="type") String type){
this.init();
BookTypeMapper btm = sqlSession.getMapper(BookTypeMapper.class);
BookType books = btm.findTypeById(Integer.valueOf(type));
this.destroy();
return JSON.toJSONString(books);
}

MyBatis一对多映射简单查询案例(嵌套Mapper映射文件中的sql语句)的更多相关文章

  1. MyBatis一对多映射简单查询案例(嵌套结果)

    一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(booki ...

  2. Mybatis学习系列(二)Mapper映射文件

    Mapper映射文件,作用是用来配置SQL映射语句,根据不同的SQL语句性质,使用不同的标签,mapper文件中常用的标签有<iselect>.<insert>.<upd ...

  3. MyBatis 体系结构、根配置文件、Mapper映射文件

    一.MyBatis的体系结构 1.SqlSessionFactory对象 SqlSessionFactory对象是MyBatis的管理核心,它是单个数据库映射关系经过编译后的内存镜像,是创建SqlSe ...

  4. MyBatis官方教程及源代码解析——mapper映射文件

    缓存 1.官方文档 MyBatis 包括一个非常强大的查询缓存特性,它能够非常方便地配置和定制. MyBatis 3 中的缓存实现的非常多改进都已经实现了,使得它更加强大并且易于配置. 默认情况下是没 ...

  5. 【Mybatis架构】Mapper映射文件中的#{}与${}

    前言 还记得当初从北京回来的时候,跟着倪文杰师姐做JavaITOO的一卡通模块,我亲姐贾梦洁带着我一块做,期间,我遇到了一个特别奇葩的问题,就死我要实现Mybatis的模糊查询,根据当时亲姐教给我方法 ...

  6. Mybatis实体类的映射文件中select,insert语句使用

    id:在命名空间中唯一的标识符,可以被用来引用这条语句. parameterType:设置传入这条语句的参数的数据类型,如int,String...... resultType:设置从这条语句中返回数 ...

  7. mybaties实体的 Mapper.xml文件中自定义sql时模糊查询的写法

    <select  id=selectByNameLike" parameterType="string" resultMap="BaseResultMap ...

  8. (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql

    http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...

  9. mybatis的mapper映射文件

    1概述1.1应用架构     mybatis框架用于支持对关系数据库的操作,该体系的应用架构如下图所示: 在mybatis框架体系中,主要的组件是:SqlSessionFactoryBean和Mapp ...

随机推荐

  1. NOIP模拟96(多校29)

    T1 子集和 解题思路 大概是一个退背包的大白板,然而我考场上想复杂了,竟然还用到了组合数. 但是大概意思是一样的,有数的最小值一定是一个在 \(a\) 数组中存在的数字. 那么我们想办法除去它对应的 ...

  2. scrapy获取汽车之家数据

    1.创建scrapy项目 >scrapy startproject scrapy_carhome 2.找到对应接口 3.创建爬虫文件 > cd scrapy_carhome\scrapy_ ...

  3. python实现调用摄像头或打开视频文件

    目录: (一)调用摄像头或打开视频文件代码实现 (二)说明和补充 (一)调用摄像头或打开视频文件代码实现 1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 ...

  4. [gym102978D]Do Use FFT

    前置知识 (以下内容并不严谨,可以参考论文<转置原理的简单介绍>) 对于一个算法,其为线性算法当且仅当仅包含以下操作: 1.$read\ i$,将$r_{i}$的值赋为(下一个)读入的元素 ...

  5. idea提交代码好习惯-代码格式化

    提交代码的时候,勾选这个可以格式化提交的代码,非常好! reformat code

  6. 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。

    1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释   CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...

  7. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  8. BZOJ 3453 - tyvj 1858 XLkxc(插值+推式子)

    题面传送门 首先根据我们刚学插值时学的理论知识,\(f(i)\) 是关于 \(i\) 的 \(k+1\) 次多项式.而 \(g(x)\) 是 \(f(x)\) 的前缀和,根据有限微积分那一套理论,\( ...

  9. FVCOM编译过程详解

    本文目的旨在介绍fvcom编译的全过程,顺便介绍linux中make命令的文件写法和一般的编程过程简述一下. 1.编程过程 编程,一般就是编写可执行程序过程.这个过程主要是源文件生成中间代码文件,再到 ...

  10. 【百奥云GS专栏】全基因组选择之工具篇

    目录 1. 免费开源包/库 1.1 R包 1.2 Python库 2. 成熟软件 3. WEB/GUI工具 前面我们已经介绍了基因组选择的各类模型,今天主要来了解一下做GS有哪些可用的软件和工具.基因 ...