开发工具:STS

代码下载链接:https://github.com/theIndoorTrain/SpringBoot_Mybatis/tree/c00b56dbd51a1e26ab9fd990201ad9e89a770ca9

前言:

今天探讨的是Mybatis一对多的处理关系。

一个人有好多本书,每本书的主人只有一个人。当我们查询某个人拥有的所有书籍时,就涉及到了一对多的映射关系。


一、添加数据表:

二、代码实现:

1.添加Book实体:

 package com.xm.pojo;
/**
* 书的实体
* @author xm
*
*/
public class Book { private int id;
private int sid;
private String name;
private double price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
} }

Book.java

2.在Student实体中添加book集合:

 package com.xm.pojo;

 import java.util.List;

 /**
* name:学生实体
* @author xxm
*
*/
public class Student {
/**
* content:主键id
*/
private int id;
/**
* content:姓名
*/
private String name; private List<Book> books; public Student() {
// TODO Auto-generated constructor stub
} public List<Book> getBooks() {
return books;
} public void setBooks(List<Book> books) {
this.books = books;
} public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }

Student.java

3.在StudentMapper接口中定义查询方法:

 package com.xm.mapper;

 import java.util.List;

 import com.xm.pojo.Student;

 public interface StudentMapper {

     /**
* 根据id查询
* @param id
* @return
*/
public Student getById(Integer id); /**
* 查询全部
* @return
*/
public List<Student> list(); /**
* 插入
* @param student
*/
public int insert(Student student);
/**
* 主键回填的插入
* @param student
* @return
*/
public int insertToId(Student student); /**
* 根据student的id修改
* @param student
*/
public void update(Student student); /**
* 根据id删除
* @param id
*/
public void delete(Integer id); /**
* 根据id查询所有的书
* @param id
*/
public Student selectBookById(Integer id); }

StudentMapper.java

4.在mapper映射关系中,添加一对多的select和resaultMap:

注意:当多个表的字段名一样的时候,查询需要用别名。

 <?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.xm.mapper.StudentMapper"> <!-- 根据id查询 -->
<select id="getById" parameterType="int" resultType="student">
select * from student where id=#{id}
</select>
<!-- 查询所有 -->
<select id="list" parameterType="int" resultType="student">
select * from student
</select> <!-- 插入一个学生 -->
<insert id="insert" parameterType="student">
insert into student(name) values(#{name})
</insert>
<!-- 主键回填的插入 -->
<insert id="insertToId" parameterType="student" useGeneratedKeys="true" keyProperty="id">
insert into student(name) values(#{name})
</insert> <!-- 根据id修改学生信息 -->
<update id="update" parameterType="student">
update student set name=#{name} where id=#{id}
</update> <!-- 根据id删除学生 -->
<delete id="delete" parameterType="int">
delete from student where id=#{id}
</delete> <resultMap type="student" id="bookMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="books" ofType="book">
<id property="id" column="bid"/>
<result property="name" column="bname"/>
<result property="price" column="price"/>
</collection>
</resultMap>
<!--根据id查询所有的书 -->
<select id="selectBookById" parameterType="int" resultMap="bookMap">
select a.*,b.id bid,b.name bname,b.price from student a,book b where a.id=b.sid and a.id=#{id};
</select>
</mapper>

StudentMapper.xml

5.在StudentController中实现查询:

 package com.xm.controller;

 import java.util.List;

 import javax.websocket.server.PathParam;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController; import com.xm.mapper.StudentMapper;
import com.xm.pojo.Student; @RestController
public class StudentController {
@Autowired
private StudentMapper studentMapper; /**
* 根据id查询学生
* @param id
* @return
*/
@GetMapping("/student/{id}")
public Student getById(@PathVariable("id") Integer id) { Student student = studentMapper.getById(id);
return student; } /**
* 查询全部
* @return
*/
@GetMapping("/students")
public List<Student> list(){
List<Student> students = studentMapper.list();
return students;
} /**
* 插入
* @param student
*/
@PostMapping("/student")
public void insert( Student student) {
studentMapper.insert(student);
} /**
* 修改
* @param student
*/
@PutMapping("/student/{id}")
public void update(Student student,@PathVariable("id")Integer id) {
studentMapper.update(student);
} /**
* 根据id删除
* @param id
*/
@DeleteMapping("/student/{id}")
public void delete(@PathVariable("id") Integer id) {
studentMapper.delete(id);
} /**
* 根据id查询所有的书
*/
@GetMapping("/student/book/{id}")
public Student getBooks(@PathVariable("id") Integer id) {
Student student = studentMapper.selectBookById(id);
return student;
} }

StudentController.java

三、测试结果:

1.数据库查询结果:

2.postman访问结果:

                                                                    2018-06-20

最新文章

  1. VS2015安装&amp;简单的C#单元测试
  2. 年月日 生日 js插件
  3. HDOJ 4389 X mod f(x)
  4. Maven工程中的右键team
  5. [CLR via C#]26. 计算限制的异步操作
  6. Monyer.cn黑客小游戏
  7. 用C#实现Base64处理,加密解密,编码解码
  8. [HDOJ5667]Sequence(矩阵快速幂,费马小定理)
  9. 用java调用oracle存储过程总结
  10. 【经验随笔】MYSQL表加锁升级导致数据库访问失败
  11. Ubuntu终端常用快捷键(精简)
  12. 导入Dynamic Web Project后程序有红叉但是可以运行
  13. 20165237 2017-2018-2 《Java程序设计》第四周考试补做及2-3章编程题
  14. Dynamics 365 CRM 添加自定义按钮
  15. AI 逻辑回归
  16. Java 的CardPanel用法
  17. leetcode简单题目两道(5)
  18. avrdude: stk500_getsync(): not in sync: resp=0x00
  19. Windows 8.1 SecureBoot未正确配置的解决方法
  20. Spring装配各种类型bean

热门文章

  1. django中的Ajax文件上传
  2. WPF 正確理解ContentPresenter
  3. pat1043. Is It a Binary Search Tree (25)
  4. HDU 5419——Victor and Toys——————【线段树|差分前缀和】
  5. 详细记录vue项目实战步骤(含vue-cli脚手架)
  6. VS2013 自定义项目模板以及制作.vsix文件
  7. JSP中的&lt;%%&gt;,&lt;%! %&gt;,&lt;%= %&gt;,&lt;%-- --%&gt;
  8. 微信小程序实战篇:基于wxcharts.js绘制移动报表
  9. position:fixed相对父级元素定位而不是浏览器
  10. 【起航计划 003】2015 起航计划 Android APIDemo的魔鬼步伐 02 SimpleAdapter,ListActivity,PackageManager参考