是否有更清洁的方法来完成下一步:
<select id="getWithQueryData" resultMap="usuarioResult" parameterType="my.QueryData" >
select * from t_user
<if test="fieldName != null and ascDesc != null">
order by
<choose>
<when test="fieldName == 'name'">
c_name
</when>
<when test="fieldName == 'lastName'">
c_last_name
</when>
<when test="fieldName == 'email'">
c_email
</when>
<when test="fieldName == 'password'">
c_password
</when>
<when test="fieldName == 'age'">
i_age
</when>
</choose>
<if test="ascDesc == 'asc'">
asc
</if>
<if test="ascDesc == 'desc'">
desc
</if>
</if>
limit #{limit} offset #{offset};
正如您所推断的,QueryData看起来像:
public class FiltroBusquedaVO {
private Integer offset;
private Integer limit;
private String fieldName;
private String ascDesc; ... }
如果我可以获得一个给出fieldName的列名,那将会很好。我的意思是,结果地图有这个信息。但似乎我无法从xml中获取它。
我的例子只有5个字段,但20个字段呢?还有另一种方法可以减少这种冗长吗?