有没有更干净的方法来做下一步:
<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};
Run Code Online (Sandbox Code Playgroud)
正如您可以推断的,QueryData 看起来像:
public class FiltroBusquedaVO {
private Integer offset;
private Integer limit;
private String fieldName;
private String ascDesc; ... }
Run Code Online (Sandbox Code Playgroud)
如果我能得到给定 fieldName 的列名,那就太好了。我的意思是,结果地图有这些信息。但似乎我无法从xml中获取它。
我的示例只有 5 个字段,但是 20 个字段又如何呢?还有另一种方法可以让这件事变得不那么冗长吗?
| 归档时间: |
|
| 查看次数: |
13542 次 |
| 最近记录: |