ibatis之mybatis 使用动态 sql 按多个字段排序
jiqing9006
阅读:59
2024-02-24 18:49:41
评论:0
有没有更干净的方法来做下一个:
<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 的列名,那就太好了。我的意思是,结果 map 有这些信息。但似乎我无法从 xml 中获取它。
我的示例只有 5 个字段,但是 20 个字段呢?有没有另一种方法可以做到这一点不那么冗长?
请您参考如下方法:
请参阅我对类似问题的回答。
Mybatis map property to column
但唯一的缺点是您的 Java 代码将了解列名。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。