MyBatis将数据库和对象映射在一起

时间:2013-03-06 16:58:03

标签: java database orm mybatis

我在struts上遇到麻烦并在我的数据库中插入记录

数据库就像这样

以下是地图:

<mapper namespace="Employees">
<resultMap id="employeeMap" type="employee">
    <id column="employeeID" property="employeeID" />
    <result column="employeeNum" property="employeeNum" />
    <result column="username" property="userName" />
    <result column="firstName" property="firstName" />
    <result column="lastName" property="lastName" />


    <association property="address" column="addressID" resultMap="addressMap" />
</resultMap>

<resultMap id="addressMap" type="address">
    <id column="addressID" property="id" />
    <result column="addressLine1" property="addressLine1" />
    <result column="addressLine2" property="addressLine2" />
    <result column="city" property="city" />
    <result column="postcode" property="postcode" />
    <result column="country" property="country" />
</resultMap>

这是Employee对象:

public class Employee{

private static final long serialVersionUID = 1L;

private int employeeID;
private String employeeNum;
private String firstName;
private String lastName;

关于存储上述关系,我的表格应如何看待?

Employees表格如下: 员工ID employeeNum 名字 姓 addressID

我一直收到类似“addressID没有默认值”的错误 一切都按照应有的方式布局,还是我错过了什么?...

1 个答案:

答案 0 :(得分:1)

您正在尝试插入员工,但您遗漏了addressID,并且需要此属性才能插入。我想是的,因为你向我们展示了映射,而不是插入查询。

在数据库中创建表时,可以为列选择“默认值”。插入寄存器并错过列时,将使用其默认值。你错过addressID并且它没有默认值,所以你得到一个错误。

因此,为address创建Employee属性,并在插入查询中使用其id