逻辑有点复杂,所以我在这里给出一个例子: 想象一下,我们在一个表中有三个字段,即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可以映射到的所有属性。如何解决这个问题呢?非常感谢!
答案 0 :(得分: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应该提供吸气剂和固定剂。
答案 1 :(得分:0)
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> allRecords = mapper.selectByExample(null);//Select All
} finally {
sqlSession.close();
}
这可以进一步优化(MyBatis插件或与spring集成)但是在生成类之后这将是简单的用法。