MyBatis一对多映射简单查询案例(嵌套Mapper映射文件中的sql语句)
一、案例描述
书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息。
二、数据库表格
书本类别表(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语句)的更多相关文章
- MyBatis一对多映射简单查询案例(嵌套结果)
一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(booki ...
- Mybatis学习系列(二)Mapper映射文件
Mapper映射文件,作用是用来配置SQL映射语句,根据不同的SQL语句性质,使用不同的标签,mapper文件中常用的标签有<iselect>.<insert>.<upd ...
- MyBatis 体系结构、根配置文件、Mapper映射文件
一.MyBatis的体系结构 1.SqlSessionFactory对象 SqlSessionFactory对象是MyBatis的管理核心,它是单个数据库映射关系经过编译后的内存镜像,是创建SqlSe ...
- MyBatis官方教程及源代码解析——mapper映射文件
缓存 1.官方文档 MyBatis 包括一个非常强大的查询缓存特性,它能够非常方便地配置和定制. MyBatis 3 中的缓存实现的非常多改进都已经实现了,使得它更加强大并且易于配置. 默认情况下是没 ...
- 【Mybatis架构】Mapper映射文件中的#{}与${}
前言 还记得当初从北京回来的时候,跟着倪文杰师姐做JavaITOO的一卡通模块,我亲姐贾梦洁带着我一块做,期间,我遇到了一个特别奇葩的问题,就死我要实现Mybatis的模糊查询,根据当时亲姐教给我方法 ...
- Mybatis实体类的映射文件中select,insert语句使用
id:在命名空间中唯一的标识符,可以被用来引用这条语句. parameterType:设置传入这条语句的参数的数据类型,如int,String...... resultType:设置从这条语句中返回数 ...
- mybaties实体的 Mapper.xml文件中自定义sql时模糊查询的写法
<select id=selectByNameLike" parameterType="string" resultMap="BaseResultMap ...
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
- mybatis的mapper映射文件
1概述1.1应用架构 mybatis框架用于支持对关系数据库的操作,该体系的应用架构如下图所示: 在mybatis框架体系中,主要的组件是:SqlSessionFactoryBean和Mapp ...
随机推荐
- Are we ready for learned cardinality estimation?
Are we ready for learned Cardinality Estimation 摘要 文章包括三大部分: 对于一个静态的数据库,本文将五种基于学习的基数估计方法与九中传统的基数估计方法 ...
- 到底谁才需要Service Mesh?
本文是Service Mesh系列第1篇 随着云原生时代的来临,使用微服务架构的朋友们开始听到一个新的技术名词--Service Mesh(现在来说已经不算新了). 对于一项新技术的学习,总归绕不过两 ...
- Python 循环控制
for循环 Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串 for 变量 in 列表.字典.字符串.函数: 执行语句 ...
- 如何用webgl(three.js)搭建一个3D库房,3D密集架,3D档案室(升级版)
很长一段时间没有写3D库房,3D密集架相关的效果文章了,刚好最近有相关项目落地,索性总结一下 与之前我写的3D库房密集架文章<如何用webgl(three.js)搭建一个3D库房,3D密集架,3 ...
- C++和Java中的i+++i++
1 public class Cd { 2 public static void main(String[]args){ 3 int i = 50 ; 4 System.out.println(i++ ...
- 让Qt给你报时,为你读诗词 之 Qt5 TTS
对,Qt没有食言,9月底如期发布了6.2 LTS.嗯,昨天是9月30日,是月底没错,准时没毛病.博客地址如下 https://www.qt.io/blog/qt-6.2-lts-release 对于老 ...
- char数据可以放入int[]中会自动转换
int[] ary ={'b','c','a','d','e','f'};System.out.println(ary[0]);//98String str = new String(ary, 2, ...
- Identity Server 4 从入门到落地(二)—— 理解授权码模式
Identity Server 的目的是认证和授权,我们需要理解认证和授权的工作过程.这就需要了解OAuth 2.0的四种授权模式,下面这张图是授权码模式的工作过程,至少我在一开始看得一头雾水: 现在 ...
- 彻底搞清楚 JavaScript 的原型和原型链
JavaScript真的挺无语的,怪不得看了那么多的介绍文章还是一头雾水,直到自己终于弄懂了一点点之后才深有体会: 先从整体说起吧,发现没有基础做依据,那都是空中楼阁: 先从基础开始介绍吧,又发现基础 ...
- Harbour.Space Scholarship Contest 2021-2022 题解
多好的上分机会啊,要是换个时间(指改在 NOI 之后)我说不定就能上 2500 了(做白日梦 ing) A 签到题不多说,显然只有末尾为 \(9\) 的数是 interesting 的,因此答案就是 ...