0

逻辑有点复杂,这里举个例子:假设我们在一个表中有三个字段,分别是A,B,C。下面的xml映射器会填充Blog类实例中的属性:

<resultMap type="Blog"  id="result">
    <result property="A" column="A"/>
    <result property="B" column="B"/>
    <result property="C" column="C"/>
</resultMap>

问题是,如果我得到一个类User,它包括三个属性,分别是A、B和C。如何使用以前的resultMap来填写User类实例中的A、B属性。这意味着我想填写上面 resultMap 可以映射到的所有属性。如何解决这个问题呢?非常感谢!

4

2 回答 2

1

你可以尝试这样的事情:

<select id="selectUsers" parameterType="int" resultType="com.someapp.model.User">
    select id             as A, 
           username       as B,   
           hashedPassword as D
    from some_table
    where id = #{id}
</select>

MyBatis 自动创建一个ResultMap基于名称将列映射到 JavaBean 属性的方法。如果列名不完全匹配,您可以在列名上使用 select 子句别名以使标签匹配。A、B 和 C 应提供 getter 和 setter。

于 2013-01-23T09:11:24.693 回答
0

保罗巴尔加斯是正确的。当然,您应该提供适当的 getter 和 setter。如果您想使用对象在每个表中执行基本的 crud 操作,您应该检查MyBatisGenerator。这将为每个表提供一个类,并为基本操作生成接口和 xml 实现,包括具有适当配置的强大条件选择。如果您按照教程进行操作,您只会这样写:

SqlSession sqlSession = sqlSessionFactory.openSession();
try {
  UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  List<User> allRecords = mapper.selectByExample(null);//Select All
} finally {
  sqlSession.close();
}

这可以进一步优化(MyBatis 插件或与 spring 集成),但这将是生成类后的简单使用。

于 2016-06-08T17:13:56.457 回答