创建Company类和Employee类,在Company类中添加Employee属性和name属性,在Employee类中添加name属性,在数据库创建Company表和Employee表,通过MyBatis查询id为1的Company类的信息(Company类中需要含有所属的Employee类的列表)。
时间: 2024-02-16 11:00:18 浏览: 76
好的,我理解了你的问题。下面是创建Company类和Employee类的Java代码:
```java
public class Company {
private Long id;
private String name;
private List<Employee> employees;
// getters and setters
}
public class Employee {
private Long id;
private String name;
private Long companyId;
// getters and setters
}
```
在这个代码中,Company类中包含了一个Employee类的列表,而Employee类中包含了一个companyId属性,用来表示该员工所属的公司。
接下来,我们需要在数据库中创建Company表和Employee表,如下所示:
```sql
CREATE TABLE company (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100)
);
CREATE TABLE employee (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
company_id BIGINT,
FOREIGN KEY (company_id) REFERENCES company(id)
);
```
在这个SQL语句中,我们创建了一个名为company的表和一个名为employee的表,并且在employee表中添加了一个外键,用来表示该员工所属的公司。
接下来,我们需要定义一个Mapper接口,用来查询id为1的Company类的信息,如下所示:
```java
public interface CompanyMapper {
@Select("SELECT * FROM company WHERE id=#{id}")
@Results({
@Result(property = "employees", column = "id", javaType = List.class, many = @Many(select = "com.example.EmployeeMapper.selectByCompanyId"))
})
Company selectById(Long id);
}
public interface EmployeeMapper {
@Select("SELECT * FROM employee WHERE company_id=#{companyId}")
List<Employee> selectByCompanyId(Long companyId);
}
```
在这个Mapper接口中,我们使用了`@Results`注解来定义查询结果映射关系,将company表中的id字段映射到Company类的id属性中,并且使用`@Many`注解来表示这是一个一对多的关系,使用`selectByCompanyId`方法来查询该公司下的所有员工。
最后,我们需要在MyBatis配置文件中定义这个Mapper接口,如下所示:
```xml
<mapper namespace="com.example.CompanyMapper">
<select id="selectById" resultType="com.example.Company">
SELECT * FROM company WHERE id=#{id}
</select>
</mapper>
<mapper namespace="com.example.EmployeeMapper">
<select id="selectByCompanyId" resultType="com.example.Employee">
SELECT * FROM employee WHERE company_id=#{companyId}
</select>
</mapper>
```
这样,我们就可以通过MyBatis查询id为1的Company类的信息,并且Company类中包含了所属的Employee类的列表。
阅读全文