java 映射关系_Java中一对多映射关系

通过栗子,一个人可以有多辆汽车

定义人   这个类

人可以有很多辆汽车,类中车属性用数组

48304ba5e6f9fe08f3fa1abda7d326ab.png

class Person{

private String name;

private String phone;

private Car[] car;

public Person() {}

public Person(String name, String phone) {

this.name = name;

this.phone = phone;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

public Car[] getCar() {

return car;

}

public void setCar(Car[] car) {

this.car = car;

}

public String getInfo(){

return "姓名"+name+",电话"+phone;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

然后定义汽车  这个类

48304ba5e6f9fe08f3fa1abda7d326ab.png

class Car{

private String name;

private double price;

private Person person;

public Car() {}

public Car(String name,double price) {

this.name = name;

this.price = price;

}

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;

}

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

public String getInfo() {

return "品牌:"+name+" 价格:"+price;

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

之后,在测试类中,分别实例Person类和Car类

人这个对象只new一个

汽车可以无限个,这里象征性实例三个

Person p = new Person("阿三","33333333");

Car c1 = new Car("宝马",400000);

Car c2 = new Car("宝来",100000);

Car c3 = new Car("宝骏",800

对象实例化之后,设置彼此的关系,即一个人对应三台车,每台车都对应一个人

通过set方法传值

p.setCar(new Car[]{c1,c2,c3});

c1.setPerson(p);

c2.setPerson(p);

c3.setPerson(p);

测试

通过人,查询其下的车辆信息

System.out.println(p.getInfo()+"拥有的车辆");

for(int i=0;i

System.out.println(p.getCar()[i].getInfo()); //数组类型用for循环打印

}

运行

623dca00a97ce449b4b3471e9a4c8013.png

通过车,查找所属人信息

System.out.println(c1.getInfo()+" 这辆车的所属人:"+c1.getPerson().getInfo());

System.out.println(c2.getInfo()+" 这辆车的所属人:"+c1.getPerson().getInfo());

System.out.println(c3.getInfo()+" 这辆车的所属人:"+c1.getPerson().getInfo());

运行

7a3303f6ace5f9d97a7cc2535082a7f2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,这个说法是正确的。在 MyBatis ,可以通过 `collection` 元素定义一对多关系,实现一对多查询。 一对多关系表示一个对象关联多个子对象。例如,一个部门对象下面有多个员工对象,那么部门对象与员工对象之间就是一对多关系。 在 MyBatis ,可以使用 `collection` 元素来实现一对多查询,例如: ```xml <!-- DepartmentMapper.xml --> <mapper namespace="com.example.mapper.DepartmentMapper"> <resultMap id="departmentMap" type="Department"> <id property="id" column="department_id" /> <result property="name" column="department_name" /> <collection property="employees" ofType="Employee" resultMap="employeeMap" /> </resultMap> <resultMap id="employeeMap" type="Employee"> <id property="id" column="employee_id" /> <result property="name" column="employee_name" /> <result property="age" column="employee_age" /> </resultMap> <select id="getDepartmentById" parameterType="int" resultMap="departmentMap"> SELECT d.id AS department_id, d.name AS department_name, e.id AS employee_id, e.name AS employee_name, e.age AS employee_age FROM department d LEFT JOIN employee e ON d.id = e.department_id WHERE d.id = #{id} </select> </mapper> ``` 在上面的例子,`Department` 对象关联了多个 `Employee` 对象,因此在 `departmentMap` 使用 `collection` 元素定义了一对多关系。`collection` 元素的 `property` 属性指定了 `Department` 对象存储子对象的集合属性名称,`ofType` 属性指定了子对象类型,`resultMap` 属性指定了子对象的映射关系。 在 `getDepartmentById` 方法,通过查询语句 `LEFT JOIN` 了 `department` 和 `employee` 两个表,并在查询结果使用了别名来指定每个属性对应的表和列。 当查询结果返回后,MyBatis 会自动将结果集转换为 Java 对象,其部门对象的 `employees` 属性将会存储多个员工对象。 因此,通过 `collection` 元素可以在 MyBatis 定义一对多关系,实现一对多查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值