java-MyBatis中的映射组成

我在MyBatis for Java中映射时遇到了一些麻烦,希望能提供一些帮助.我的课程结构如下:

//Getters/setters omitted for clarity

class Foo 
{
  int id;
  Bar bar;
}

class Bar {
  String x;
  int y;
}

我的表看起来像这样-即它是从类结构中反规范化的.

create table foo_bar (
  id int,
  x varchar,
  y int
);

我的工作插入语句能够使用(bar.x,bar.y)参数进行反规范化.

<insert id="insert" parameterType="foo">
  <![CDATA[
    insert into foo_bar
    (id, x, y) values
    (#{x}, #{bar.x}, #{bar.y})
  ]]>
</insert>

所以,问题是:

当我执行select时,我希望结果对象是具有Bar引用的Foo实例.

我不认为我可以使用类型处理程序,因为它可以处理单个列,并且关联似乎没有意义,因为“ Bar”不是通过外键关系在数据库中明确表示的实体.

有人可以告诉我推荐的方法吗?

谢谢!

解决方法:

您是否尝试过在ibatis sqlmap中使用resultMap定义?

<resultMap id="foobar-result" class="Foo">
    <result property="id" column="id"/>
    <result property="bar.x" column="x"/>
    <result property="bar.y" column="y"/>
</resultMap>

然后在您的SQL中,只需引用resultMap:

<select id="getFooBar" resultMap="foobar-result">
上一篇:The MySQL server is running with the --read-only option so i


下一篇:java-IBATIS 2.0动态设置表名