Mybatis 多对一查询的实现方法

网友投稿 521 2022-10-28

Mybatis 多对一查询的实现方法

Mybatis 多对一查询的实现方法

目录架构环境搭建数据库实体类接口Mapper配置文件子查询方法按结果集查询

架构

这里从学生的角度来说就是多对一的场景

那么在java中是怎么样的呢?

环境搭建

数据库

CREATE TABLE `student`(

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR(20) DEFAULT NULL

)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student VALUES (1,"李老师");

CREATE TABLE `student` (

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR(20) DEFAULT NULL ,

`tid` INT(4) NOT NULL,

KEY `fk_tid` (`tid`),

CONSTRAINT fk_tid FOREIGN KEY(`tid`) REFERENCES `teacher`(`id`)

INSERT INTO student VALUES

(1,"小红",1),

(2,"小绿",1),

(3,"小灯",1),

(4,"小勿",1),

(5,"小闯",1);

实体类

Student

package pojo;

import lombok.Data;

@Data

public class Student {

private int id;

private String name;

private Teacher teacher;//这里因为我们有一个对应的关系,学生要对应到一个老师,所以要使用Teacher类型

}

Teacher

package pojo;

import lombok.Data;

@Data

public class Teacher {

private int id;

private String name;

}

接口

(因为这里是多对一,所以我就没有用到TeacherMapper)StudentMapper

package dao;

import pojo.Student;

import java.util.List;

public interface StudentMapper {

List getStudents();

List getStudents2();

}

TeacherMapper

package dao;

public interface TeacherMapper {

}

Mapper配置文件

TeacherMapper.xml

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

StudentMapper.xml

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select s.id sid,s.name sname,t.id tid,t.name tname from student s,teacher t where s.tid=t.id;

http://select * from student;

select * from teacher where id=#{id};

这里说明一下

association 是相对于对象的collection是相对于集合的

然后这里有两种方法,我们一种一种看

子查询方法

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&http://gt;

select * from student;

select * from teacher where id=#{id};

也就是这种方法,它其实是相当于我们Sql里面的子查询,也就是一层查询里面嵌套一层查询

按结果集查询

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select s.id sid,s.name sname,t.id tid,t.name tname from student s,teacher t where s.tid=t.id;

这种方法就是我们一次性把结果查询出来然后对结果集做一下处理这里特别说明一下column这个属性,这个可不是数据库中你需要的字段名,而是你查询出来的那张表的字段名,这里起了别名之后就不再是原来teacher数据库表中的字段名了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:yaf使用命名空间,并使用smarty模板引擎
下一篇:Trestle一个Ruby on Rails的现代响应管理框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~