创建Company类和Employee类,在Company类中添加Employee属性和name属性,在Employee类中添加name属性,在数据库创建Company表和Employee表,通过MyBatis查询id为1的Company类的信息(Company类中需要含有所属的Employee类的列表
时间: 2024-02-25 15:58:40 浏览: 154
mybatis对数据库基本操作
好的,根据你的要求,我可以帮你创建这两个类,并创建数据库表,最后使用MyBatis查询信息。以下是代码示例:
首先是`Employee`类和`Company`类的定义:
```python
class Employee:
def __init__(self, name):
self.name = name
class Company:
def __init__(self, id, name):
self.id = id
self.name = name
self.employees = []
```
在上面的代码中,我们定义了一个`Employee`类和一个`Company`类。`Employee`类有一个`name`属性,表示员工的姓名。`Company`类有一个`id`和一个`name`属性,表示公司的编号和名称,以及一个`employees`属性,用于存储公司的员工。
接下来是创建数据库表的SQL语句:
```sql
CREATE TABLE Company (
id INT PRIMARY KEY,
name VARCHAR(255)
);
CREATE TABLE Employee (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
company_id INT,
FOREIGN KEY (company_id) REFERENCES Company(id)
);
```
在上面的SQL语句中,我们创建了一个`Company`表和一个`Employee`表。`Company`表包含`id`和`name`两个列,`Employee`表包含`id`、`name`和`company_id`三个列。`company_id`列是外键,参考`Company`表的`id`列。
最后是使用MyBatis查询的代码:
```python
import mysql.connector
import xml.etree.ElementTree as ET
# 读取MyBatis的配置文件
tree = ET.parse('mybatis-config.xml')
root = tree.getroot()
# 连接数据库
db_config = root.find('environments').find('environment').find('dataSource')
config = {
'host': db_config.find('property[@name="host"]').get('value'),
'user': db_config.find('property[@name="username"]').get('value'),
'password': db_config.find('property[@name="password"]').get('value'),
'database': db_config.find('property[@name="database"]').get('value')
}
conn = mysql.connector.connect(**config)
# 查询id为1的公司信息
cursor = conn.cursor()
cursor.execute('SELECT * FROM Company WHERE id=%s', (1,))
company_data = cursor.fetchone()
company = Company(company_data[0], company_data[1])
cursor.execute('SELECT * FROM Employee WHERE company_id=%s', (1,))
employee_data = cursor.fetchall()
for employee_row in employee_data:
employee = Employee(employee_row[1])
company.employees.append(employee)
print("Company name:", company.name)
print("Employees:")
for employee in company.employees:
print(employee.name)
# 关闭数据库连接
cursor.close()
conn.close()
```
在上面的代码中,我们首先读取了MyBatis的配置文件,并使用其中的信息连接到MySQL数据库。然后,我们执行了两个SQL查询语句,分别查询`Company`表和`Employee`表中与id为1的公司有关的数据。接下来,我们创建了一个`Company`对象,并将查询结果中的数据填充到对象中。最后,我们打印了公司信息和所有员工的姓名。
需要注意的是,我们使用了`fetchone()`方法获取查询结果中的第一行数据,因为我们只查询了一条记录。如果查询结果包含多条记录,可以使用`fetchall()`方法获取所有查询结果。同时,我们还使用了`AUTO_INCREMENT`关键字来指定`Employee`表中的`id`列自增长,以便每个员工都有一个唯一的编号。
阅读全文